【发布时间】:2019-11-04 21:15:01
【问题描述】:
如果我做 round(4.265,2),它会返回 4.26,但如果我做 round(4.375,2),它会返回 4.38。
round(4.265,2)
round(4.375,2)
Answer:
4.26 (Expecting 4.27 instead of 4.26)
4.38
我期望第一轮函数的输出为 4.27,就像它为第二轮函数 (4.38) 所做的那样。有谁知道为什么 python 返回不同的四舍五入答案?
【问题讨论】:
-
在此处找到相关答案:stackoverflow.com/questions/10093783/… 它被称为“银行家的四舍五入”。
-
银行家的四舍五入并不是解释这种行为的原因。结果是由于将用十进制表示的数字文字转换为正在使用的内部二进制浮点格式时引入的错误。
4.265舍入到4.26,因为它更接近 4.26 而不是 4.27。 -
感谢@ShadowRanger。我一直在寻找那个重复但没有找到它(并找到了很多试图通过银行家四舍五入来解释这一点的答案)。
-
@MarkDickinson:我很确定还有其他重复项,这只是我发现的第一个。我同意很难一目了然地确定一个问题是涉及银行家的四舍五入还是浮点表示问题。
标签: python python-3.x floating-point rounding