Krav: Brukes ofte til avrunding og er ikke særlig følsom for presisjonskrav.
For å oppnå avrunding med to desimaler, skrev utvikleren følgende kode,
Koden er veldig enkel, utviklereDet faktiske resultatet var 12,12, noe som motsa det forventede avrundingsresultatet på 12,13。
Årsaken til dette resultatet er at Math.Round ikke bruker avrundingsregelen som standard, men heller runder for å lage partall.
Rund opp til fem for å lage et par
Den såkalte avrundingen av seks til fem for å danne et par betyr at etter å ha bestemt de signifikante sifrene, hvis neste signifikante siffer er mindre enn eller lik 4, rundes det ned; hvis det er større enn eller lik 6, runder opp med én. Når neste signifikante siffer er 5,
- Hvis tallet før 5 er oddetall, rund opp fem og gå frem med én
- Hvis 5 er før et partall, hopp over 5 (0 er partall).
Statistisk sett er avrunding til partall mer nøyaktig enn å runde fem, fordi når det er mange beregninger, kan avrunding for hver fem til én gi et større tall.
For eksempel:
1,15+1,25+1,35+1,45 = 5,2
Hvis de signifikante sifrene er én desimal, oppnås resultatet ved hjelp av avrundingsprinsippet
1,2 + 1,3 + 1,4 + 1,5 = 5,4
Resultatet som oppnås ved å runde til fem partall er
1,2 + 1,2 + 1,4 + 1,4 = 5,2
Dette viser at avrundingsregelen gir mer presise resultater.
Math.Round
Så hvordan bruker du Math.Round for å oppnå forventet avrunding?
Faktisk tilbyr Math.Round i C# mange overbelastningsmetoder, inkludert to metoder:
Begge metodene gir en tredje parameter kalt modus, som er en enumerasjonsvariabel i MidpointRounding med to valgbare verdier
- AwayFromZero – avrunding oppover
- ToEven - avrunding til partall, avrunding
Så hvis vi ønsker et ideelt avrundet resultat, kan vi bruke følgende kode:
MidpointRundingsoppramsing, som vist nedenfor:
Referanse:Innloggingen med hyperkoblingen er synlig. |