@Epic18

Почему 0,5 округляется до чётного числа?

Не мог понять почему так
Math.Round(4.5); // 4
Math.Round(5.5); // 6

Потом нашел утверждение что если дробь 0.5 то число округляется до четного числа. Просто выдумали такое правило от скуки что ли или есть какое то обоснование этого правила?
  • Вопрос задан
  • 156 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Это банковское округление называется.
Нужно оно для повышения точности при обработке большого количества околослучайных чисел (когда количество чётных и нечётных +0.5 примерно равно)

Если тебе такое поведение не нужно, то тогда просто передавай третий аргумент - там можно выбрать, как стоит округлять в такой ситуации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Округляет до четного, потому что так написано в документации к функции:

The integer nearest a. If the fractional component of a is halfway between two integers, one of which is even and the other odd, then the even number is returned. Note that this method returns a Double instead of an integral type.


Если нужное другое округление, то есть перегрузки:
Math.Round(4.5, MidpointRounding.ToEven);
Math.Round(4.5, MidpointRounding.ToZero);
Math.Round(4.5, MidpointRounding.AwayFromZero);
Math.Round(4.5, MidpointRounding.ToNegativeInfinity);
Math.Round(4.5, MidpointRounding.ToPositiveInfinity);
Ответ написан
igolets
@igolets
Программист C#, MSSQL
Я когда-то даже написал на эту тему статью.

https://habr.com/ru/articles/801899/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы