Rotunjire dublă în două zecimale în C#? (Programare, C#, Dublu, Rotunjire)

sanjeev40084 a intrebat.

Vreau să rotunjesc valoarea dublă în două zecimale în c# cum pot face asta?

double inputValue = 48.485;

după rotunjire

inputValue = 48.49;

Related: c# – Cum se rotunjește o valoare zecimală la 2 zecimale (pentru ieșire pe o pagină)

Comentarii

  • Rețineți că nu puteți reprezenta toate valorile cu virgulă mobilă folosind double și acest lucru vă poate încurca atunci când rotunjiți…  > Por Liam.
8 răspunsuri
Alex LE

Acest lucru funcționează:

inputValue = Math.Round(inputValue, 2);

Comentarii

  • soluția de lucru pentru a trunchia float: float myTruncFloat = float.Parse(Math.Round(myFloat, 2).ToString()); -.  > Por Piero Alberto.
  • Dacă valoarea este 48.0000. Nu va rezulta 48.00. double inputValue = 48.00; inputValue = Math.Round(inputValue, 2); va rezulta doar 48. Există vreun răspuns ? –  > Por user1926138.
  • conform documentației, acest lucru ar trebui să rotunjească numerele de mijloc la cel mai apropiat număr par docs.microsoft.com/en-us/dotnet/api/… –  > Por rdans.
nandin
Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

Comentarii

  • Aceasta este de fapt ceea ce ar trebui să fie utilizat. Majoritatea operațiilor din bănci etc. se fac folosind această metodă (MidpointRounding.AwayFromZero). –  > Por MadBoy.
  • 45

  • sugerând că băncile folosesc duble este înfricoșător tipule, nu folosiți valori de aproximare pentru monedă. –  > Por raggi.
  • @raggi Mă tem că unele (bănci) o fac… Asta ar explica o mulțime de lucruri –  > Por SparK.
  • Da, cred că după asta a fost făcut filmul „Office Space” – rotunjirea fracțiunilor de cenți pe care nimeni nu le-ar observa. Un bun punct de vedere pentru a fi atenți când să folosiți în mod arbitrar rotunjirea. –  > Por atconway.
  • Și ca parte din complotul unuia dintre filmele originale Superman waaay mult timp în urmă. –  > Por James Westgate.
Diwas

O altă modalitate ușoară este să folosiți ToString cu un parametru.Exemplu:

float d = 54.9700F;    
string s = d.ToString("N2");
Console.WriteLine(s);

Rezultat:

54.97

Gage

Ar trebui să utilizați

inputvalue=Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

Math.Round

Math.Round rotunjește o valoare în virgulă mobilă de precizie dublă la un număr specificat de cifre fracționare.

MidpointRounding

Specifică modul în care metodele matematice de rotunjire trebuie să proceseze un număr care se află la jumătatea distanței dintre două numere.

Practic, funcția de mai sus va lua valoarea de intrare și o va rotunji la 2 zecimale (sau la orice număr pe care îl specificați). Cu MidpointRounding.AwayFromZero atunci când un număr se află la jumătatea distanței dintre alte două numere, acesta este rotunjit către cel mai apropiat număr care este departe de zero. Există, de asemenea, o altă opțiune pe care o puteți utiliza și care rotunjește către cel mai apropiat număr par.

recursiv

Utilizați Math.Round

value = Math.Round(48.485, 2);

Comentarii

  • Mi-a luat-o înainte (deși aș adăuga și eu un punct și virgulă acolo 😉 ) –  > Por Reed Copsey.
  • Cu toate acestea, aveți grijă cu MidpointRounding: „Dacă valoarea primei cifre din valoarea din dreapta poziției zecimale a cifrelor este 5, cifra din poziția cifrelor este rotunjită în sus dacă este impară, sau lăsată neschimbată dacă este pară” – –  > Por Matthias.
reza.cse08

puteți încerca una din cele de mai jos.există mai multe modalități pentru acest lucru.

1. 
 value=Math.Round(123.4567, 2, MidpointRounding.AwayFromZero) //"123.46"
2.
 inputvalue=Math.Round(123.4567, 2)  //"123.46"
3. 
 String.Format("{0:0.00}", 123.4567);      // "123.46"
4. 
string.Format("{0:F2}", 123.456789);     //123.46
string.Format("{0:F3}", 123.456789);     //123.457
string.Format("{0:F4}", 123.456789);     //123.4568

Comentarii

  • Eu am folosit a patra opțiune. Scrierea F6 a funcționat pentru mine mai bine decât scrierea a 6 zerouri 😉 –  > Por Maurice Klimek.
bigpony

Utilizați un șir interpolat, acesta generează un șir rotunjit:

var strlen = 6;
$"{48.485:F2}"

Ieșire

"48.49"

Bobby D.

Cred că toate aceste răspunsuri nu înțeleg întrebarea. Problema era să „rotunjim în sus”, nu doar să „rotunjim”. Înțeleg că „Round Up” înseamnă că orice valoare fracționară despre o cifră întreagă se rotunjește până la următoarea cifră întreagă. de exemplu: 48.0000000 = 48, dar 25.00001 = 26. Nu este aceasta definiția rotunjirii în sus? (sau cei 60 de ani petrecuți în contabilitate au fost greșiți?