Vaatimukset: Käytetään usein pyöristykseen eikä ole kovin herkkä tarkkuusvaatimuksille.
Kahden desimaalin pyöristämiseksi kehittäjä kirjoitti seuraavan koodin,
Koodi on hyvin yksinkertaista, kehittäjätTodellinen tulos oli 12,12, mikä oli ristiriidassa odotetun pyöristystuloksen 12,13 kanssa。
Tämän tuloksen syynä on se, että Math.Round ei käytä pyöristyssääntöä oletuksena, vaan kierroksia tasoittamiseksi.
Pyöristetään viiteen, jolloin tehdään pari
Niin sanottu kuuden ja viiden pyöristys parin muodostamiseksi tarkoittaa, että merkitsevien numeroiden määrittämisen jälkeen, jos seuraava merkittävä numero on pienempi tai yhtä suuri kuin 4, se pyöristetään alaspäin; jos se on suurempi tai yhtä suuri kuin 6, pyöristetään ylöspäin yhdellä. Kun seuraava merkittävä numero on 5,
- Jos numero ennen 5 on pariton, pyöristetään viisi ja etene yhdellä
- Jos 5 on ennen parillista numeroa, ohita 5 (0 on parillinen).
Tilastollisesti pyöristys parilliseen on tarkempaa kuin viiden pyöristys, koska kun laskelmia on paljon, pyöristämällä joka viiden kerta yhteen voi johtaa suurempaan lukuun.
Esimerkiksi:
1,15+1,25+1,35+1,45 = 5,2
Jos merkitsevät numerot ovat yksi desimaali, tulos saadaan pyöristysperiaatteen avulla
1.2 + 1.3 + 1.4 + 1.5 = 5.4
Pyöristämällä viiteen parilliseen saadaan tulos on
1.2 + 1.2 + 1.4 + 1.4 = 5.2
Tämä osoittaa, että pyöristyssääntö tuottaa tarkempia tuloksia.
Math.Round
Miten siis käytät Math.Roundia saavuttaaksesi odotetun pyöristyksen?
Itse asiassa Math.Round C#:ssa tarjoaa monia ylikuormitusmenetelmiä, mukaan lukien kaksi menetelmää:
Molemmat menetelmät tarjoavat kolmannen parametrin nimeltä mode, joka on MidpointRoundingin enumeraatiomuuttuja kahdella valittavalla arvolla
- AwayFromZero - pyöristys ylöspäin
- Tasolle – pyöristäminen tasoihin
Jos haluamme ideaalipyöristetyn tuloksen, voimme käyttää seuraavaa koodia:
MidpointRounding-luettelo, kuten alla on esitetty:
Viittaus:Hyperlinkin kirjautuminen on näkyvissä. |