提问人:Adil Khatri 提问时间:6/28/2023 最后编辑:Sam MasonAdil Khatri 更新时间:6/29/2023 访问量:72
Python ROUND_HALF_EVEN的工作原理
how python ROUND_HALF_EVEN works
问:
为什么即使在我的全局上下文“舍入”设置为 之后,我也会得到 0.27 作为我的答案?round(0.265, 2)
ROUND_HALF_EVEN
这是我的代码。
import decimal
from decimal import Decimal
print(decimal.getcontext())
a = 0.265
print(Decimal(a))
print(round(a, 2)) # current output: 0.27
这是输出
Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
0.26500000000000001332267629550187848508358001708984375
0.27
我很困惑,因为我认为输出应该是 0.26 而不是 0.27,因为四舍五入设置为 .ROUND_HALF_EVEN
答:
5赞
Paul
6/28/2023
#1
0.26500000000000001332267629550187848508358001708984375
是 0.265 的二进制近似值,更接近 0.27。
尽量保持精确度。a = Decimal('0.265')
从 https://www.programiz.com/python-programming/methods/built-in/round
上一个:分割大笔款项;处理无穷大的总和
下一个:程序集浮点数学
评论
0.26500000000000001332267629550187848508358001708984375
不是 2.6 和 2.7 之间的中间。它更接近 2.7。