python - 带 2 位小数的舍入方法的错误结果

标签 python rounding

我对带有 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/

相关文章:

python - 如何使用pygame在python中移动图像?

javascript - 在 Javascript 中将钱四舍五入到最接近的 10 美元

c# - MS Excel 货币四舍五入法

python - 使用 Python 和 Flask 流式传输数据引发 RuntimeError : working outside of request context

python - 同一图表上的同一查询在 Neptune 与 Gremlify 上返回不同的结果

python - Pandas 与 twinx 一起绘图

python - 我可以要求一些很棒的个性化Python IDE 的屏幕截图吗?

java - 将 Java BigDecimal 舍入到最近的间隔

javascript舍入函数