Изисквания: Често се използва за закръгляне и не е много чувствителен към изискванията за прецизност.
За да се постигне закръгляне на две десетични числа, разработчикът написа следния код,
Кодът е много прост, разработчициДействителният резултат беше 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 - закръгляне към равномерно закръгляне
Ако искаме идеално закръглен резултат, можем да използваме следния код:
Средна точкаЗакръгляне на изброяване, както е показано по-долу:
Препратка:Входът към хиперлинк е видим. |