Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 1|Odpověď: 0

[Tipy] .NET/C# používá zaokrouhlování Midpoint od Math.Round pro zaokrouhlování

[Kopírovat odkaz]
ZveřejněnoPřed 46 sekundami | | | |
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é.




Předchozí:Optimalizace WITH (NOLOCK) pro dotazy EF Core s vysokou souběžností
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com