0

Почему в python int(0.9999999999999999) == 0, а int(0.99999999999999999) == 1?

1 Answers1

0

Потому что точность вещественных чисел в вашем компьютере ограничена.

@>>> f'{0.9999999999999999:.60g}'
'0.99999999999999988897769753748434595763683319091796875'
@>>> f'{0.99999999999999999:.60g}'
'1'

Оба числа невозможно представить точно в виде двоичной дроби (а вещественные числа хранятся в таком виде: m * 2^e, m и e - целые). Питон подыскивает наилучшее приближение. Чем больше девяток тем ближе это приближение к единице. Рано или поздно единица и получается.

P.S. int к проблеме не относится. Проблема случается раньше, когда Питон превращает строку 0.99999999999999999 в вещественное число 1.