Heim >Backend-Entwicklung >C++ >Wie kann man Werte in C# auf eine bestimmte Anzahl von Dezimalstellen kürzen, nicht runden oder verdoppeln?

Wie kann man Werte in C# auf eine bestimmte Anzahl von Dezimalstellen kürzen, nicht runden oder verdoppeln?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-27 12:15:111006Durchsuche

How to Truncate, Not Round, Double Values to a Specific Number of Decimal Places in C#?

Doppelte Werte ohne Rundung in C# abschneiden

Beim Konvertieren einer Gleitkommazahl mit doppelter Genauigkeit in eine Zeichenfolge in C# können Sie dies tun stoßen Sie auf die Notwendigkeit, es mit einer bestimmten Anzahl von Dezimalstellen zu formatieren. Allerdings kann die Verwendung von String.Format("{0:0.00}") zu Rundungen führen, was für bestimmte Szenarien, in denen Sie eine exakte Kürzung wünschen, unerwünscht ist.

Um dieses Problem zu beheben, verwenden Sie eine Kombination aus Math.Truncate () und NumberFormatInfo.CurrentInfo, um eine Kürzung ohne Rundung zu erreichen und kultursensitiv zu bleiben Formatierung.

Lösung:

  1. Den Double-Wert mit Math.Truncate() abschneiden:
double myDoubleValue = 50.947563;
double x = Math.Truncate(myDoubleValue * 100) / 100;

Dieser Vorgang Multipliziert den Wert mit 100, kürzt ihn, um Dezimalstellen zu entfernen, und dividiert ihn dann durch 100, um den Wert wiederherzustellen Originalskala.

  1. Formatieren Sie den abgeschnittenen Wert mit NumberFormatInfo.CurrentInfo:
string s = x.ToString("N2", NumberFormatInfo.CurrentInfo);

Dieser Formatbezeichner verwendet die Formatzeichenfolge „N“, die die Währungsformatierung mit a einschließt nachgestelltes Prozentzeichen. NumberFormatInfo.CurrentInfo stellt sicher, dass die Formatierung den aktuellen Kultureinstellungen folgt.

Ergebnis:

Mit der oben genannten Methode erhalten Sie eine Zeichenfolgendarstellung des Double-Werts mit genau zwei Dezimalstellen ohne Rundung. Beispielsweise wird der Wert 50,947563 auf 50,94 gekürzt, ohne auf 50,95 aufgerundet zu werden.

Das obige ist der detaillierte Inhalt vonWie kann man Werte in C# auf eine bestimmte Anzahl von Dezimalstellen kürzen, nicht runden oder verdoppeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn