Я просто перечитывал Что нового в Python 3.0 и в нем говорится:
Изменена стратегия округления функции round() и тип возвращаемого значения. Точные половинные случаи теперь округлены до ближайшего четного результата от нуля. (Например, round (2.5) теперь возвращает 2, а не 3.)
и документация для round:
Для встроенных типов, поддерживающих round(), значения округляются до ближайший кратный 10 к мощности минус n; если два кратных одинаково близко, округление выполняется по отношению к четному выбору
Итак, под v2.7.3:
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
как я и ожидал. Однако теперь под v3.2.3:
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
Это кажется противоречивым и противоречащим тому, что я понимаю о округление (и связанное с поездкой людей). Английский не мой родной язык, но пока я не прочитал это, я думал, что знаю, что такое округление: -/Я уверен в момент введения v3 должно было быть некоторое обсуждение это, но я не смог найти вескую причину в своем поиске.
- Кто-нибудь знает, почему это было изменено на это?
- Существуют ли какие-либо другие основные языки программирования (например, C, С++, Java, Perl,..), которые делают это (для меня непоследовательное) округление?
Что мне здесь не хватает?
UPDATE: @Li-aungYip comment re "Банкир округление" дал мне правильный поиск/ключевые слова для поиска, и я нашел этот вопрос SO: Почему .NET использует округление банкира как по умолчанию?, поэтому я буду внимательно его читать.