Două zecimale folosind c #

decimal Debitvalue = 1156.547m;

decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:0.00}", Debitvalue));

Trebuie să obțin doar două zecimale, dar folosind acest cod primesc 1156.547. Dați-mi voie să știu ce format trebuie să utilizez pentru a afișa două zecimale.

36
Math.Round ar funcționa și chiar codul dvs. ar funcționa. Am testat cu codul dvs. și a funcționat zecimală fină Debitvalue = Convert.ToDecimal ("1156.547"); zecimal DEBITAMT = Convert.ToDecimal (string.Format ("{0: 0.00}", Debitvalue)); Console.WriteLine (DEBITAMT);
adăugat autor Anand, sursa
Da, corecta ta, Multumesc!
adăugat autor Kiran Reddy, sursa

10 răspunsuri

Întrebarea dvs. vă cere să afișați două zecimale. Utilizarea următoarei formate String.format vă va ajuta:

String.Format("{0:.##}", Debitvalue)

aceasta va afișa apoi numărul cu numai două zecimale.

Sau dacă doriți ca simbolul valută afișat să utilizeze următoarele:

String.Format("{0:C}", Debitvalue)
44
adăugat
aceasta nu funcționează cu adevărat. se va rotunji 4.998 la 5 dar OP vrea să aibă 2 zecimale ca 4.99
adăugat autor batmaci, sursa
De fapt, formatul din primul ar fi "{0: .00}", dacă ar vrea 2.10 să arate. Cu ##, ar fi 2,1.
adăugat autor SvendK, sursa

Utilizați Math.Round() pentru rotunjirea la două zecimale

decimal DEBITAMT = Math.Round(1156.547m, 2);
40
adăugat

If you want to round the decimal, look at Math.Round()

27
adăugat
@Dragon - deoarece conversia unui număr într-un șir și revenirea la un număr este un miros de cod.
adăugat autor cjk, sursa
de ce nu acest Convert.ToDecimal (string.Format ("{0: F2}", Debitvalue)); atunci când folosim deja convert.todecimal în cod.
adăugat autor Dragon, sursa
ooh kk .. atunci voi folosi ca Math.round (Convert.todecimal (val), 2) ..
adăugat autor Dragon, sursa

Eu folosesc

decimal Debitvalue = 1156.547m;
decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:F2}", Debitvalue));
16
adăugat

aici este o altă abordare

decimal decimalRounded = Decimal.Parse(Debitvalue.ToString("0.00"));
14
adăugat

Cea mai bună abordare dacă doriți să afișați ÎNTOTDEAUNA două zecimale (chiar dacă numărul dvs. are doar o zecimală) trebuie utilizat

yournumber.ToString("0.00");
9
adăugat

Pentru afișarea numai, proprietatea String poate fi utilizată ca următor.

double value = 123.456789;
String.Format("{0:0.00}", value);

Folosind System.Math.Round . Această valoare poate fi alocată altora sau manipulată după cum este necesar.

double value = 123.456789;
System.Math.Round(value, 2);
9
adăugat

Altă cale :

decimal.Round (decimalvalue, 2, MidpointRounding.AwayFromZero);

3
adăugat

Another option is to use the Decimal.Round Method

2
adăugat

Probabil o variantă a celorlalte exemple, dar folosesc această metodă pentru a vă asigura că un punct este afișat înaintea zecimalelor și nu o virgulă:

someValue.ToString ("0.00", CultureInfo.InvariantCulture)

2
adăugat