Krav: Bruges ofte til afrunding og er ikke særlig følsom over for præcisionskrav.
For at opnå afrunding af to decimaler skrev udvikleren følgende kode,
Koden er meget simpel, udviklereDet faktiske resultat var 12,12, hvilket modsagde det forventede afrundingsresultat på 12,13。
Årsagen til dette resultat er, at Math.Round ikke bruger afrundingsreglen som standard, men snarere runder for at gøre det lige.
Rund op til fem for at lave et par
Den såkaldte afrunding af seks til fem for at danne et par betyder, at efter at have bestemt de signifikante cifre, hvis det næste signifikante ciffer er mindre end eller lig med 4, rundes det ned; hvis det er større end eller lig med 6, afrundes med et. Når det næste signifikante ciffer er 5,
- Hvis tallet før 5 er ulige, runde op til fem og rykke op med én
- Hvis 5 er før et lige tal, spring 5 over (0 er lige).
Statistisk set er afrunding til lige mere præcis end at runde fem, fordi når der er mange beregninger, kan afrunding for fem til én føre til et større tal.
For eksempel:
1,15+1,25+1,35+1,45 = 5,2
Hvis de signifikante cifre er én decimalplads, opnås resultatet ved hjælp af afrundingsprincippet
1,2 + 1,3 + 1,4 + 1,5 = 5,4
Resultatet, der opnås ved at runde til fem lige tal, er
1,2 + 1,2 + 1,4 + 1,4 = 5,2
Dette viser, at afrundingsreglen giver mere præcise resultater.
Math.Round
Så hvordan bruger man Math.Round til at opnå den forventede afrunding?
Faktisk tilbyder Math.Round i C# mange overbelastningsmetoder, herunder to metoder:
Begge metoder giver en tredje parameter kaldet mode, som er en enumerationsvariabel i MidpointRounding med to valgbare værdier
- AwayFromZero - afrunding op
- Til lige - afrunding til lige afrunding
Så hvis vi ønsker et ideelt afrundet resultat, kan vi bruge følgende kode:
MidpointRounding-opramning, som vist nedenfor:
Henvisning:Hyperlink-login er synlig. |