Wie Runde double-Werte, aber halten Sie nachfolgende Nullen
In C# ich möchte eine Funktion, die Runden einer bestimmten verdoppeln, um eine bestimmte Menge von Nachkommastellen. Ich will immer meine Funktion einen Wert zurückgeben (das kann ein string) mit der angegebenen Menge der Dezimalzahlen. Wenn notwendig, werden nachgestellte Nullen Hinzugefügt werden müssen.
Beispiel:
string result = MyRoundingFunction(1.01234567, 3);
//this must return "1.012"
Das ist einfach-es ist die Rundung und Konvertierung zum string. Aber hier kommt das problem:
string result2 = MyRoundingFuntion(1.01, 3);
//this must return "1.010"
Ist es eine günstige/standard-Weg, dies zu tun, oder muss ich Sie manuell hinzufügen müssen nachfolgende Nullen?
Jede Hilfe ist willkommen. Beachten Sie, dass in der real-life-Anwendung kann ich nicht codieren Sie die Anzahl der Nachkommastellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen, formatter wie in diesem Beispiel:
oder (leichter)
Nebenbei,
ToString
verwendet dieMidpointRounding.AwayFromZero
statt derMidpointRounding.ToEven
(auch als Banker ' s Rounding). Als Beispiel:Diese produzieren unterschiedliche Ergebnis (weil
Math.Round
normalerweise verwendetMidpointRounding.ToEven
)Und beachten Sie, dass intern
ToString()
scheint zu tun, die "Magie" vor der Rundung Ziffern. Für Doppel -, wenn Sie ihn bitten, weniger als 15 Ziffern, ich glaube, es Runden zu 15 Ziffern, die erste und dann Runden, um die richtige Anzahl von Ziffern. Hier sehen https://ideone.com/ZBEis9num
variable, aber ich habe vergessen, es zu tun. Es funktioniert, klar 🙂 (in der gleichen Weise, die Sie tun können"HelloWorld".Substring(5)
)d
. Es istf
.d
ist für Ganzzahlen. Aus MSDNResult: Integer digits with optional negative sign. Supported by: Integral types only.
Ihre Lösung (macht, was man will).
Sollten Sie die erste Runde, dann formatieren.
Was Sie Lesen sollten, ist:
Math.Runde
String.Format, Benutzerdefinierten Numerischen Format
Als option können Sie mit der Erweiterung zu unterstützen, dass
Extension-Methoden
Einfach: