【问题标题】:Python : banker's roundingPython:银行家的四舍五入
【发布时间】:2023-03-22 14:57:02
【问题描述】:

根据银行家的四舍五入,例如,平局为偶数,

round(1.25,1) -> 1.2 圆形(1.35,1) -> 1.4

但是,在以下四舍五入的情况下,

round(1.15,1) -> 1.1

应该是1.2,为什么是1.1

谁能帮忙。

【问题讨论】:

标签: python rounding


【解决方案1】:

floatpython 中的实现不允许保存任何分数,因此某些被保存为近似值,请参阅decimal 内置模块文档以进行进一步讨论。 python 确实显示为 1.15 但实际上它是其他(关闭)数字,可以保存为浮点数,考虑关注

print(1.15+1.15+1.15==3.45)  # False
print(1.15+1.15+1.15)  # 3.4499999999999997

您可以使用decimal.Decimal 来防止与浮动相关的问题,如下所示

import decimal
approx = round(decimal.Decimal("1.15"),1)
print(approx)  # 1.2

请注意,您应该将str 用作decimal.Decimal 而不是float

【讨论】:

  • 亲,这是银行家算法的问题,你的回答不满意。
猜你喜欢
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 2017-12-26
相关资源
最近更新 更多