Cerințe: Adesea folosite pentru rotunjiri și nu foarte sensibile la cerințele de precizie.
Pentru a obține rotunjirea a două zecimale, dezvoltatorul a scris următorul cod,
Codul este foarte simplu, dezvoltatoriRezultatul real a fost 12,12, ceea ce contrazice rezultatul așteptat de rotunjire de 12,13。
Motivul acestui rezultat este că Math.Round nu folosește implicit regula rotunjirii, ci mai degrabă rundează pentru a face egalitate.
Rotunjește până la cinci pentru a forma o pereche
Așa-numita rotunjire de la șase la cinci pentru a forma o pereche înseamnă că, după determinarea cifrelor semnificative, dacă următoarea cifră semnificativă este mai mică sau egală cu 4, se rotunjește în jos; dacă este mai mare sau egală cu 6, rotunjim în sus cu unu. Când următoarea cifră semnificativă este 5,
- Dacă numărul dinaintea de 5 este impar, rotunjim cinci în sus și avansați cu unu
- Dacă 5 este înaintea unui număr par, sari peste 5 (0 este par).
Statistic, rotunjirea la par este mai precisă decât rotunjirea la cinci, deoarece atunci când există multe calcule, rotunjirea la fiecare cinci la unu poate duce la un număr mai mare.
De exemplu:
1.15+1.25+1.35+1.45 = 5.2
Dacă cifrele semnificative sunt o zecimală, rezultatul se obține folosind principiul rotunjirii
1.2 + 1.3 + 1.4 + 1.5 = 5.4
Rezultatul obținut prin rotunjire la cinci par este
1.2 + 1.2 + 1.4 + 1.4 = 5.2
Aceasta arată că regula rotunjirii oferă rezultate mai precise.
Math.Round
Deci, cum folosești Math.Round pentru a obține rotunjirea așteptată?
De fapt, Math.Round în C# oferă multe metode de supraîncărcare, inclusiv două metode:
Ambele metode oferă un al treilea parametru numit mod, care este o variabilă de enumerare a MidpointRounding cu două valori selectabile
- DeparteDinZero - recapitularea în sus
- ToEven - rotunjirea la rotunjirea egală
Așadar, dacă vrem un rezultat ideal rotunjit, putem folosi următorul cod:
MidpointRounding enumerare, așa cum este prezentat mai jos:
Referință:Autentificarea cu hyperlink este vizibilă. |