Wie man doppelte Werte rundet, aber nachgestellte Nullen behält

8

In C # möchte ich eine Funktion, die ein gegebenes Double auf eine bestimmte Anzahl von Dezimalstellen rundet. Ich möchte immer, dass meine Funktion einen Wert (der eine Zeichenkette sein kann) mit der gegebenen Anzahl an Dezimalzahlen zurückgibt. Falls erforderlich, müssen nachgestellte Nullen hinzugefügt werden.

Beispiel:

%Vor%

Das ist einfach, es wird nur gerundet und in eine Zeichenfolge umgewandelt. Aber hier kommt das Problem:

%Vor%

Gibt es eine bequeme / standardmäßige Möglichkeit, dies zu tun, oder muss ich manuell nachgestellte Nullen hinzufügen?

Jede Hilfe wird geschätzt. Beachten Sie, dass ich in der realen Anwendung die Anzahl der Dezimalstellen nicht fest codieren kann.

    
Bart Gijssens 20.10.2011, 08:47
quelle

5 Antworten

11

Sie können einen Formatierer wie dieses Beispiel erstellen:

%Vor%

oder (einfacher)

%Vor%

Als Nebenbemerkung verwendet ToString MidpointRounding.AwayFromZero anstelle von MidpointRounding.ToEven (auch Banker's Rounding genannt). Als Beispiel:

%Vor%

Dies erzeugt ein anderes Ergebnis (weil Math.Round normalerweise MidpointRounding.ToEven verwendet)

Beachten Sie, dass intern ToString() vor dem Runden der Zahlen etwas "Magie" zu tun scheint. Wenn Sie bei Doppelbelegung weniger als 15 Ziffern eingeben, wird zuerst auf 15 Ziffern abgerundet und dann auf die richtige Anzahl von Ziffern gerundet. Siehe hier Ссылка

    
xanatos 20.10.2011, 08:51
quelle
3

Ihre Lösung (tut was Sie wollen).

%Vor%     
Valdemar 20.10.2011 09:07
quelle
3
%Vor%     
Steven 20.10.2011 08:50
quelle
1

Sie sollten zuerst runden, dann formatieren.

%Vor%

Was Sie lesen sollten ist:

Math.Round

String.Format , Custom Numeric Format

Als Option könnten Sie die Erweiterung verwenden, um

zu unterstützen

Erweiterungsmethoden

    
quelle
0

Einfach:

%Vor%     
Chris Halcrow 02.11.2017 02:07
quelle

Tags und Links