Возьмите этот код, например:Почему Python возвращает оператор False, если он не должен?
print 2.0 == 2 #---> returns True
print 12 % 5 #---> returns 2
print ((12.0/5) - (12/5)) * 5 #---> returns 2.0
print ((12.0/5) - (12/5)) * 5 == 12 % 5 #---> returns False (What the hell happens here?)
'((12.0/5) - (12/5)) * 5' не' 2.0' –
[Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой] (http://docs.oracle.com /cd/E19957-01/806-3568/ncg_goldberg.html) – Bakuriu
Кроме того, это отличается между Python 2 и 3. Python2: '((12.0/5) - (12/5)) * 5 = 1.9999999999999996', Python3: '((12.0/5) - (12/5)) * 5 = 0.0' –