Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 1|Răspunde: 0

[Bacșișuri] .NET/C# folosește MidpointRounding din Math.Round pentru rotunjire

[Copiază linkul]
Postat peAcum 46 de secunde | | | |
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ă.




Precedent:Optimizare WITH (NOLOCK) pentru interogări EF Core cu concurență mare
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com