Потому что 1.1 нельзя точно представить в двоичном виде; аппроксимация немного выше, чем 1,1 - поэтому результат деления слишком мал.
Попробуйте следующее:
В Python 2 введите в консоли:
>>> 1.1
1.1000000000000001
В Python 3.1 консоль будет отображать 1.1
, но внутри это все тот же номер.
Но:
>>> 11/1.1
10.0
Как указывает Гнибблер, это является результатом "внутреннего округления" в пределах доступных пределов точности поплавков. И, как указывает MYYN в своем комментарии, //
использует другой алгоритм для вычисления результата деления по этажам, чем math.floor()
, чтобы сохранить a == (a//b)*b + a%b
как можно лучше.
Используйте тип Decimal
, если вам нужна эта точность.