Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 1|Atsakyti: 0

[Patarimai] .NET/C# apvalinimui naudoja Math.Round MidpointRounding

[Kopijuoti nuorodą]
PaskelbtaPrieš 46 sekundes | | | |
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.




Ankstesnis:SU (NOLOCK) optimizavimas didelio lygiagrečio EF Core užklausoms
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com