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.


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()


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)

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


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");

21

ich benutze

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

16

Hier ist ein anderer Ansatz

decimal decimalRounded = Decimal.Parse(Debitvalue.ToString("0.00"));

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);

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)

4

Ein anderer Weg :

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



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.