Zwei Dezimalstellen mit c #

71
decimal Debitvalue = 1156.547m;

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

Ich muss nur zwei Dezimalstellen erhalten, aber mit diesem Code erhalte ich 1156.547. Lassen Sie mich wissen, welches Format ich verwenden muss, um zwei Dezimalstellen anzuzeigen.

Kiran Reddy
quelle
Math.Round würde funktionieren und sogar Ihr Code würde funktionieren. Ich habe mit Ihrem Code getestet und es hat gut funktioniert. Dezimal Debitvalue = Convert.ToDecimal ("1156.547"); decimal DEBITAMT = Convert.ToDecimal (string.Format ("{0: 0.00}", Debitvalue)); Console.WriteLine (DEBITAMT);
Anand

Antworten:

37

Wenn Sie die Dezimalstelle runden möchten, schauen Sie sich an Math.Round()

cjk
quelle
5
warum nicht diese Convert.ToDecimal (string.Format ("{0: F2}", Debitvalue));, wenn wir bereits convert.todecimal im Code verwenden.
Dragon
5
@Dragon - weil das Konvertieren einer Zahl in eine Zeichenfolge und zurück in eine Zahl ein Code-Geruch ist.
CJK
4
ooh kk..dann werde ich wie folgt Math.round (Convert.todecimal (val), 2) ..
Dragon
68

Ihre Frage lautet, zwei Dezimalstellen anzuzeigen. Die Verwendung des folgenden String.Formats hilft:

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

Dies zeigt dann eine Zahl mit bis zu zwei Dezimalstellen an (z. B. würde 2.10 als 2.1 angezeigt).

Verwenden Sie "{0: .00}", wenn Sie immer zwei Dezimalstellen anzeigen möchten (z. B. wird 2.10 als 2.10 angezeigt).

Wenn das Währungssymbol angezeigt werden soll, verwenden Sie Folgendes:

String.Format("{0:C}", Debitvalue)
WoofWoof88
quelle
11
Tatsächlich wäre das Format im ersten "{0: .00}", wenn 2.10 angezeigt werden soll. Mit ## wäre es 2.1.
SvendK
Dieser funktioniert nicht wirklich. es wird 4.998 bis 5 runden, aber OP will 2 Dezimalstellen als 4.99 haben
Emil
Sie können dies auch schreiben String.Format("{0:C}", Debitvalue)als$"{Debitvalue:C}"
Ram Pratap
51

Verwenden Sie Math.Round()für die Rundung auf zwei Dezimalstellen

decimal DEBITAMT = Math.Round(1156.547m, 2);
Nikhil Agrawal
quelle
34

Der beste Ansatz, wenn Sie IMMER zwei Dezimalstellen anzeigen möchten (auch wenn Ihre Zahl nur eine Dezimalstelle hat), ist die Verwendung

yournumber.ToString("0.00");
Kevin Infante
quelle
21

ich benutze

decimal Debitvalue = 1156.547m;
decimal DEBITAMT = Convert.ToDecimal(string.Format("{0:F2}", Debitvalue));
Esteban Perez
quelle
16

Hier ist ein anderer Ansatz

decimal decimalRounded = Decimal.Parse(Debitvalue.ToString("0.00"));
KALT ERZÄHLT
quelle
11

Nur zur Anzeige kann die Eigenschaft von Stringwie folgt verwendet werden:

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

Verwenden von System.Math.Round. Dieser Wert kann anderen zugewiesen oder nach Bedarf bearbeitet werden.

double value = 123.456789;
System.Math.Round(value, 2);
Md. Shafiqur Rahman
quelle
4

Wahrscheinlich eine Variante der anderen Beispiele, aber ich verwende diese Methode, um sicherzustellen, dass ein Punkt vor den Dezimalstellen und kein Komma angezeigt wird:

someValue.ToString("0.00", CultureInfo.InvariantCulture)
AH.
quelle
4

Ein anderer Weg :

decimal.Round(decimalvalue, 2, MidpointRounding.AwayFromZero);
Kabilan Smart
quelle
2

Eine andere Option ist die Verwendung der Decimal.Round-Methode

Dimitar Tsonev
quelle
-1

In einigen Tests hier hat es perfekt funktioniert:

Decimal.Round(value, 2);

Hoffe das hilft

Rodrigo Rodrigues
quelle
Was trägt dies beispielsweise zur Antwort von Kabilan Smart 2015/02 bei ?
Graubart