gpt4 book ai didi

python - 为什么舍入 0.5(十进制)不准确?

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:25 24 4
gpt4 key购买 nike

<分区>

二分之一,即十进制的 0.5,具有精确的二进制表示:0.1

不过,如果我将它四舍五入为整数,我会得到 0 而不是 1。我在 Python 和 C 中尝试过,它们的行为相同。例如。 python 代码:

>>> a,b,c = 0.49, 0.5, 0.51
>>> [round(x) for x in (a,b,c)]
[0, 0, 1]
>>> "%.0f %.0f %.0f" % (a,b,c)
'0 0 1'

有趣的是,

>>> a,b,c = 0.049, 0.05, 0.051
>>> [round(x,1) for x in (a,b,c)]
[0.0, 0.1, 0.1]
>>> "%.1f %.1f %.1f" % (a,b,c)
'0.0 0.1 0.1'

我知道许多类似的问题,例如Python rounding error with float numbers , Python tutorial on floating point arithmetics ,以及强制性的 What Every Computer Scientist Should Know About Floating-Point Arithmetic .

如果一个数字有一个精确的二进制表示,例如(十进制)0.5,它不应该被正确舍入吗?

edit:3.4.3版本有问题,2.7.6版本没有

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com