Krav: Används ofta för avrundning och är inte särskilt känslig för precisionskrav.
För att avrunda två decimaler skrev utvecklaren följande kod,
Koden är väldigt enkel, utvecklareDet faktiska resultatet var 12,12, vilket motsade det förväntade avrundningsresultatet på 12,13。
Anledningen till detta resultat är att Math.Round inte använder avrundningsregeln som standard, utan istället rundor för att göra jämnt.
Runda upp till fem för att bilda ett par
Den så kallade avrundningen av sex till fem för att bilda ett par innebär att efter att de signifikanta siffrorna bestämts, om nästa signifikanta siffra är mindre än eller lika med 4, avrundas den nedåt; om den är större än eller lika med 6, avrundas med ett. När nästa signifikanta siffra är 5,
- Om siffran före 5 är udda, runda upp fem och flytta fram med ett
- Om 5 är före ett jämnt tal, hoppa över 5 (0 är jämnt).
Statistiskt sett är avrundning jämnt mer exakt än att avrunda fem, eftersom när det finns många beräkningar kan avrundning var femte till ett leda till ett större tal.
Till exempel:
1,15+1,25+1,35+1,45 = 5,2
Om de signifikanta siffrorna är en decimal erhålls resultatet med avrundningsprincipen
1,2 + 1,3 + 1,4 + 1,5 = 5,4
Resultatet som erhålls genom att avrunda till fem jämna talor är
1,2 + 1,2 + 1,4 + 1,4 = 5,2
Detta visar att avrundningsregeln ger mer precisa resultat.
Math.Round
Så hur använder du Math.Round för att uppnå den förväntade avrundningen?
Faktum är att Math.Round i C# erbjuder många överbelastningsmetoder, inklusive två metoder:
Båda metoderna ger en tredje parameter kallad mode, som är en uppräkningsvariabel i MidpointRounding med två valbara värden
- AwayFromZero – avrundar
- Till jämn – avrundning till jämn avrundning
Så om vi vill ha ett idealt avrundat resultat kan vi använda följande kod:
Mittpunktavrundning, som visas nedan:
Hänvisning:Inloggningen med hyperlänken är synlig. |