Вопрос: Почему метод Math.Round в C# неожиданно округляет числа и как это можно исправить? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Вопрос: Почему метод Math.Round в C# неожиданно округляет числа и как это можно исправить? [закрыто]

Сообщение Anonymous »

Я столкнулся с проблемой округления чисел в C#. На первый взгляд кажется, что метод Math.Round() работает правильно, но при округлении определенных чисел результаты оказываются неожиданными.
Пример:
  • Для числа 3,1455543 вызов Math.Round(3.1455543, 2) возвращает ожидаемый результат — 3,15.
  • Однако для числа 3.1447456 тот же метод Math.Round(3.1447456, 2) возвращает 3.14, а это не то, что я ожидал (я хочу 3.14). strong>3.15).
Кто-нибудь может объяснить, почему это происходит? Я понимаю, что метод Math.Round использует «банковское округление» (округление до половины до четного), но почему в этом конкретном случае не происходит ожидаемого округления?
Есть ли решение этой проблемы проблема в том, чтобы числа округлялись по стандартным математическим правилам, а не методом "банкирского округления"?
P.S. Пожалуйста, отвечайте только в том случае, если вы точно знаете, как это исправить. Мне не нужны теоретические дискуссии или предложения, не проверенные на реальных примерах. Я устал от «советов», которые не работают, поэтому убедитесь, что ваш ответ основан на реальном опыте и проверен вами.
Заранее спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/793 ... expectedly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»