Požadavky: Často se používá pro zaokrouhlování a není příliš citlivý na požadavky na přesnost.
Aby vývojář dosáhl zaokrouhlování o dvě desetinná místa, napsal následující kód,
Kód je velmi jednoduchý, vývojářiSkutečný výsledek byl 12,12, což bylo v rozporu s očekávaným zaokrouhlovacím výsledkem 12,13。
Důvodem tohoto výsledku je, že Math.Round nepoužívá pravidlo zaokrouhlování jako standard, ale spíše zaokrouhlování pro sudé číslo.
Zaokrouhlete na pět, abyste vytvořili pár
Takzvané zaokrouhlení ze šesti na pět pro vytvoření páru znamená, že po určení významných číslic, pokud je další významná číslice menší nebo rovna 4, zaokrouhluje se dolů; pokud je větší nebo rovna 6, zaokrouhluje se o jednu nahoru. Když je další významná číslice 5,
- Pokud je číslo před pětkou liché, zaokrouhlte pět nahoru a posuňte se o jednu
- Pokud je 5 před sudým číslem, přeskočte 5 (0 je sudé).
Statisticky je zaokrouhlování na sudé přesnější než zaokrouhlování pět, protože při mnoha výpočtech může zaokrouhlování každých pět na jednu vést k většímu číslu.
Například:
1,15+1,25+1,35+1,45 = 5,2
Pokud jsou znameninné číslice jedno desetinné místo, výsledek se získá pomocí principu zaokrouhlování
1,2 + 1,3 + 1,4 + 1,5 = 5,4
Výsledek získaný zaokrouhlením na pět sudých čísel je
1,2 + 1,2 + 1,4 + 1,4 = 5,2
To ukazuje, že pravidlo zaokrouhlování přináší přesnější výsledky.
Math.Round
Jak tedy použít Math.Round k dosažení očekávaného zaokrouhlení?
Ve skutečnosti Math.Round v C# nabízí mnoho metod přetížení, včetně dvou:
Obě metody poskytují třetí parametr nazvaný mode, což je enumerační proměnná MidpointRounding se dvěma volitelnými hodnotami
- AwayFromZero – zaokrouhlování nahoru
- ToEvenly – zaokrouhlování na rovnoměrné zaokrouhlování
Pokud tedy chceme ideální zaokrouhlený výsledek, můžeme použít následující kód:
Enumerace zaokrouhlování středního bodu, jak je uvedeno níže:
Odkaz:Přihlášení k hypertextovému odkazu je viditelné. |