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

Вид: 1|Ответ: 0

[Чаевые] .NET/C# использует MidpointRounding из Math.Round для округления

[Скопировать ссылку]
Опубликовано46 секунд назад | | | |
Требования: часто используется для округления и не очень чувствительна к требованиям к точности.

Для округления двух десятичных знаков разработчик написал следующий код:
Код очень прост, разработчикиФактический результат составил 12.12, что противоречило ожидаемому результату округления 12.13

Причина этого результата в том, что Math.Round по умолчанию не использует правило округления, а вместо этого использует раунды для получения чётного результата.

Округли до пяти, чтобы сделать пару

Так называемое округление от шести до пяти для получения пары означает, что после определения значимых цифр, если следующая значимая цифра меньше или равна 4, она округляется вниз; если она больше или равна 6 — округляется вверх на единицу. Когда следующая значимая цифра равна 5,

  • Если число до 5 нечётное, округляем пять и продвигаемся на один
  • Если 5 — перед чётным числом, пропустите 5 (0 чётно).

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

Например:

1,15+1,25+1,35+1,45 = 5,2

Если значительные цифры — это один знак после запятой, результат получается по принципу округления

1,2 + 1,3 + 1,4 + 1,5 = 5,4

Результат, полученный округлением до пяти чётных чисел, равен

1,2 + 1,2 + 1,4 + 1,4 = 5,2

Это показывает, что правило округления даёт более точные результаты.

Math.Round

Так как же использовать Math.Round для достижения ожидаемого округления?

На самом деле, Math.Round в C# предоставляет множество методов перегрузки, включая два метода:
Оба метода предоставляют третий параметр, называемый mode, который является переменной перечисления MidpointRounding с двумя выбираемыми значениями

  • AwayFromZero — округление
  • ToEven — округление к равномерному округлению

Если нам нужен идеальный округлённый результат, можно использовать следующий код:
Средняя точка Округление перечисления, как показано ниже:



Ссылка:Вход по гиперссылке виден.




Предыдущий:Оптимизация WITH (NOLOCK) для высококонкурентных запросов EF Core
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com