Когда я пытаюсь проверить, содержит ли переменная float точное целочисленное значение, я получаю следующее странное поведение. Мой код:Python float и int поведение
x = 1.7 print x, (x == int(x))
x += 0.1 print x, (x == int(x))
x += 0.1 print x, (x == int(x))
x += 0.1 print x, (x == int(x))
print "----------------------"
x = **2.7** print x, (x == int(x))
x += 0.1 print x, (x == int(x))
x += 0.1 print x, (x == int(x))
x += 0.1 print x, (x == int(x))
Я получаю на следующие странный вывод (последняя строка проблемы):
1.7 False
1.8 False
1.9 False
2.0 True
----------------------
2.7 False
2.8 False
2.9 False
3.0 False
Любая идея, почему 2.0
является true
и 3.0
является false
?
[Это относится чтение из документации.] (https://docs.python.org/2/tutorial/ floatingpoint.html) – SuperBiasedMan
[Является ли математика с плавающей запятой?] (Http://stackoverflow.com/q/588004/995714). http://floating-point-gui.de/, [Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –