let amount:Float = 2.235
print("\(roundf(self.amountTax * 100)/100)")
返回2.23斯威夫特roundf不是浮點值工作
,但它應該是2.24
let amount:Float = 2.235
print("\(roundf(self.amountTax * 100)/100)")
返回2.23斯威夫特roundf不是浮點值工作
,但它應該是2.24
結果是2.23
因爲amount * 100
是223.5
和該舍入爲223
(因爲2.235
可能沒有確切的表示形式,但類似於2.234999999999
),除以100就會導致2.23
。
您可能需要使用ceilf
油膏代替:
print("(ceilf(amount * 100)/100)")
'223.5'具有精確的表示形式,但是'2.235'沒有。 –
但如果金額爲「1.4312」,則返回1.44,則應爲1.43,即兩位小數 – Ranjan
嘗試'打印(amount.debugDescription)',你會看到問題... –
也看看[是浮點數學破?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)和[每個計算機科學家應該知道什麼浮點算術](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html)。 –