Python int(90.0)=89错误

Python int(90.0)=89错误,python,int,Python,Int,这是我写的一个更大的程序中的一个小故障,我无法理解。我正在使用Python 2.7 n = 0.5 while n < 2: print(int(n * 100)) n += 0.1 我知道有很多解决办法,但我仍然很好奇为什么会发生这种情况。它是文件命名函数的一部分,用于对原始数据的输出文件进行排序。提前谢谢 浮点运算是不精确的。有很多很多资源可以解释为什么——这里有一个基本的出发点: 以及特定于Python的教程: 如果需要十进制数的精确表示,请使用内置库。通常不需要

这是我写的一个更大的程序中的一个小故障,我无法理解。我正在使用Python 2.7

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

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

浮点运算是不精确的。有很多很多资源可以解释为什么——这里有一个基本的出发点:

以及特定于Python的教程:


如果需要十进制数的精确表示,请使用内置库。通常不需要,但如果需要,它就在那里。

欢迎使用浮点运算。另外,
range(50200,10)
更适合您的用途。我忘了range(),谢谢。从int()转换开始,迭代在程序的其他地方进行。这是我可以编写的复制问题的最简单代码。我想我本可以简化它。
decimal
库工作正常。至于浮点,我想我对打印到屏幕上的值假设得太多了。另一个解决方法(使用我对打印到屏幕上的内容的假设)是:
print(int(float)(str(n*100)))
这很难看,但很有效。
n = 0.9
print(int(n * 100))