2016-11-19 61 views
0

我有一個返回浮點數的程序。我需要返回小數點後兩位數字的答案,並截斷任何多餘的數字而不是四捨五入。有人可以給我一個例子嗎?你如何截斷而不是四捨五入? C

+0

在C中,當您將浮點數轉換爲int時,小數部分將被丟棄。因此,要截斷到小數點後兩位,可以乘以100,轉換爲int,然後除以100.(但請參閱下一條評論。) –

+2

請注意,在今天的絕大多數計算機中,沒有像具有小數點後兩位(小數)小數的數字。即使你認爲你已經完全轉化爲1.23,但內部可能是1.2299999或1.23000001。所以你可能不得不在打印輸出上舍入這些數字,例如'printf%.2f'。 –

回答

2

有一個截斷的特殊函數:trunc(..)丟棄小數點後的所有內容。

如果你想一定數量的小數位數後截斷,你可以這樣做以下:

trunc(number * 100)/100 

這應該是顯而易見如何通過上述線路正常。

+0

ty goood先生。那是我需要的。 – FruitPunchSamurai

+0

這種方法在許多情況下都可以。在典型的OP問題之外,它確實有問題:1)數值接近1/100的倍數,因爲「數字* 100」引入了附加舍入。 2)用'| number |溢出> DBL_MAX/100'。 3)特殊值,比如'-0.0,INF'。 – chux

+0

@chux我同意。你知道更好的方法嗎? – HolyBlackCat