why in python int (0.99999999999999) == 0
, and int (0.999999999999999) == 1
?
Answer 1, Authority 100%
Because the accuracy of real numbers in your computer is limited.
@ & gt; & gt; & gt; f '{0.9999999999999999: .60g}'
'0.99999999999999988897769753748434595763683319091796875'
@ & gt; & gt; & gt; f '{0.99999999999999999: .60g}'
'1'
Both numbers cannot be imagined precisely in the form of binary fractions (and real numbers are stored in this form: M * 2 ^ E
, M
and E
– whole). Python is looking for the best approximation. The more nines the closer is the approach to one. Sooner or later, one and it turns out.
p.s. int
does not apply to the problem. The problem happens earlier when Python turns the line 0.99999999999999999
in the real number 1