我对round()的结果感到困惑,小数点后两位

a = 1352.845
res = round(a, 2)
=> 1352.85 (Right as I expected)

b = 578.005
res = round(b, 2)
=> 578.0 (Wrong, It would be 578.01 instead of 578.0)


案例b会发生什么?我是否误解了?

回答:

from decimal import Decimal, ROUND_UP

Decimal('578.005').quantize(Decimal('.01'), rounding=ROUND_UP)


因为它需要用于货币,所以在我的情况下,python round()(Banker's Rounding)的默认约定不合适

最佳答案

尽管这可能会造成混淆,但这是由于大多数十进制小数不能精确表示为float类型。

有关更多参考,请参见:https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues

关于python - 四舍五入到小数点后两位的结果错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53809196/

10-12 15:33