gpt4 book ai didi

python - 将 float 转换为 int 会导致值不正确

转载 作者:行者123 更新时间:2023-11-28 21:27:38 25 4
gpt4 key购买 nike

结果变量将保存值 9.0。为什么当我使用“%d”打印时打印返回 8?

result = (((1.7526 % 0.3048) / 0.3048) * 12)
print(result) #prints 9.0
print("%f" % result) #prints 9.0
print("%d" % result) #prints 8

最佳答案

浮点运算本质上是不精确的。在 Python 中,计算通常以 double 执行。您的数字不能完全表示为 double ,因此会出现舍入误差。在我的机器上,结果8.9999999999999929

>>> result = (((1.7526 % 0.3048) / 0.3048) * 12)
>>> result
8.9999999999999929
>>> print result
9.0
>>> int(result)
8

当您打印该值时,它四舍五入为 9.0,但存储在 result 中的实际值小于 9.0。因此,当您将 result 转换为整数时,它会被截断为 8

关键问题是值的可表示性。 1.75260.3048 都不能用 double 精确表示,这在 Python 解释器中很容易看出。

>>> 1.7526
1.7525999999999999
>>> 0.3048
0.30480000000000002

这个故事的寓意是,在使用浮点值时,您不应该期待精确的算术运算。该主题的开创性讨论是:What Every Computer Scientist Should Know About Floating-Point Arithmetic .

关于python - 将 float 转换为 int 会导致值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574246/

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