Этой "фиче" больше лет, чем мне. Возведение 2 в степень 2 на калькуляторе МК-64 в 1985 году - давало 3.99999999999 :) Вместо int() для чисел с плавающей запятой следует использовать округление до нужного Вам числа знаков.
Числа типа float хранятся не в десятичной системе. Большинство десятичных дробей не представимы точно в двоичном виде, поэтому Python хранит ближайшее двоичное число. 18.56 в памяти на самом деле немного меньше 18.56 → после умножения на 100 получается 1855.9999999999998, а вывод просто показывает реальное значение. 18.55 и 18.57 случайно попадают в область, которая после умножения округляется ровно до целого — поэтому там «красиво».
no subject
Date: 2025-12-29 10:05 pm (UTC)Вместо int() для чисел с плавающей запятой следует использовать округление до нужного Вам числа знаков.
no subject
Date: 2025-12-29 10:10 pm (UTC)Но почему именно 18.56?
no subject
Date: 2025-12-29 10:18 pm (UTC)18.56 в памяти на самом деле немного меньше 18.56 → после умножения на 100 получается 1855.9999999999998, а вывод просто показывает реальное значение.
18.55 и 18.57 случайно попадают в область, которая после умножения округляется ровно до целого — поэтому там «красиво».
no subject
Date: 2025-12-29 10:26 pm (UTC)В общем, надо аккуратнее быть с такой фигнёй..