gpt4 book ai didi

Python int(90.0) = 89 错误

转载 作者:行者123 更新时间:2023-12-01 05:39:01 24 4
gpt4 key购买 nike

这是我编写的一个较大程序中的一个小故障,我无法弄清楚。我使用的是 Python 2.7。

n = 0.5
while n < 2:
print(int(n * 100))
n += 0.1

90、100 和 110 的输出关闭 1。截断的输出:50、60、70、80、89、99、109、120、130、140、...

当我 a) 以 n = 0.8 开始,b) 直接打印 float ,或者 c) 不使用循环递增 n 时,不会发生这种情况:

n = 0.9
print(int(n * 100))

我知道有很多解决方法,但我仍然很好奇为什么会发生这种情况。它是用于对原始数据的输出文件进行排序的文件命名功能的一部分。提前致谢!

最佳答案

浮点运算不精确。有很多很多资源可以解释原因 - 这是一个一般起点:http://en.wikipedia.org/wiki/Round-off_error

还有一个特定于 Python 的教程: http://docs.python.org/2/tutorial/floatingpoint.html

如果您需要十进制数字的精确表示,请使用decimal内置库。通常您不会这样做,但如果您需要的话它就在那里。

关于Python int(90.0) = 89 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18117992/

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