Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 1|Отговор: 0

[Бакшиши] .NET/C# използва Math.Round MidpointRounding за закръгляне

[Копирай линк]
Публикувано вПреди 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