我对带有 2 位小数的 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()(银行家舍入)的默认约定不适合我的情况
最佳答案
虽然这可能会造成混淆,但这是因为大多数小数不能精确表示为 float
类型。
如需进一步引用,请参阅:https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues
关于python - 带 2 位小数的舍入方法的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53809196/