Почему round() округляет 5 по-разному

Почему для двух примеров округление происходит по-разному:

print(round(10.25, 1)) # 10.2
print(round(10.15, 1)) # 10.2

В первом случае округление в меньшую сторону, а во втором случае округление в большую сторону.

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
08 апреля 2024

Согласно документации среднее значение округляется в сторону четного числа.

26 0
Аватар пользователя Борис
Борис
28 января 2025

У меня в Replit округляет так: 10.05 -> 10.1 10.15 -> 10.2 10.25 -> 10.2 10.35 -> 10.2 10.45 -> 10.4 10.55 -> 10.5 10.65 -> 10.7 10.75 -> 10.8 10.85 -> 10.8 10.95 -> 10.9 11.05 -> 11.0 11.15 -> 11.2 Совсем не согласно документации. Почему?

0 0
Аватар пользователя Maxim Dzyubak
Maxim Dzyubak
25 марта 2025

Это связано с тем, что Python использует метод округления до ближайшего чётного числа (также известный как “банковское округление”).

Вот как это работает:

Если цифра перед отбрасываемой 5 является чётной, то число округляется в меньшую сторону Если цифра перед отбрасываемой 5 является нечётной, то число округляется в большую сторону Поэтому:

10.25 округляется до 10.2 (цифра 2 - чётная, поэтому округляем в меньшую сторону)
10.15 округляется до 10.2 (цифра 1 - нечётная, поэтому округляем в большую сторону)

Это делается для того, чтобы избежать систематической ошибки в большую или меньшую сторону при массовых расчётах. Такой метод округления считается более статистически точным при работе с большими наборами данных.

0 0
Познакомьтесь с основами Python бесплатно