Reikalavimai: Dažnai naudojamas apvalinimui ir nėra labai jautrus tikslumo reikalavimams.
Norėdami suapvalinti du skaitmenis po kablelio, kūrėjas parašė šį kodą:
Kodas labai paprastas, kūrėjaiTikrasis rezultatas buvo 12,12, o tai prieštaravo tikėtinam apvalinimo rezultatui 12,13。
Šio rezultato priežastis yra ta, kad Math.Round pagal numatytuosius nustatymus nenaudoja apvalinimo taisyklės, o apvalina lyginius.
Suapvalinkite iki penkių, kad susidarytumėte porą
Vadinamasis apvalinimas nuo šešių iki penkių, kad būtų sudaryta pora, reiškia, kad nustačius reikšminius skaitmenis, jei kitas reikšminis skaitmuo yra mažesnis arba lygus 4, jis suapvalinamas žemyn; jei jis yra didesnis arba lygus 6, suapvalinamas vienetu. Kai kitas reikšminis skaitmuo yra 5,
- Jei skaičius prieš 5 yra nelyginis, suapvalinkite penkis ir pirmyn vienu
- Jei 5 yra prieš lyginį skaičių, praleiskite 5 (0 yra lyginis).
Statistiškai apvalinimas iki lyginio yra tikslesnis nei penkių apvalinimas, nes kai yra daug skaičiavimų, apvalinant kas penkis iki vieno galima gauti didesnį skaičių.
Pavyzdžiui:
1,15+1,25+1,35+1,45 = 5,2
Jei reikšminiai skaitmenys yra vienas skaičius po kablelio, rezultatas gaunamas apvalinimo principu
1,2 + 1,3 + 1,4 + 1,5 = 5,4
Rezultatas, gautas suapvalinus iki penkių lygių, yra
1,2 + 1,2 + 1,4 + 1,4 = 5,2
Tai rodo, kad apvalinimo taisyklė duoda tikslesnius rezultatus.
Math.Round
Taigi, kaip naudoti Math.Round, kad pasiektumėte numatytą apvalinimą?
Tiesą sakant, Math.Round C# pateikia daug perkrovos metodų, įskaitant du metodus:
Abu metodai pateikia trečią parametrą, vadinamą režimu, kuris yra MidpointRounding išvardijimo kintamasis su dviem pasirenkamomis reikšmėmis
- AwayFromZero - apvalinimas į viršų
- ToEven - apvalinimas iki lygaus apvalinimo
Taigi, jei norime idealaus suapvalinto rezultato, galime naudoti šį kodą:
MidpointRounding išvardijimas, kaip parodyta toliau:
Nuoroda:Hipersaito prisijungimas matomas. |