/
Вопросы и ответы
/
Python
/

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

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

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

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

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

год назад

Ivan Gagarinov

Ответы

29

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

год назад

Ivan Gagarinov

6

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

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

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

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

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

6 месяцев назад

Maxim Dzyubak

0

У меня в 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 Совсем не согласно документации. Почему?

8 месяцев назад

Борис