Heim >Backend-Entwicklung >C++ >Wie kann man Werte in C# auf eine bestimmte Anzahl von Dezimalstellen kürzen, nicht runden oder verdoppeln?
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:
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.
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!