Wie formatiere ich Double
a String
in C # so, dass nur zwei Dezimalstellen vorhanden sind?
Wenn ich String.Format("{0:0.00}%", myDoubleValue)
die Zahl benutze, wird sie gerundet und ich möchte ein einfaches Abschneiden ohne Rundung. Ich möchte auch, dass die Konvertierung String
kulturell sensibel ist.
Antworten:
Ich benutze folgendes:
Zum Beispiel:
Wenn die Nummer 50.947563 lautet und Sie Folgendes verwenden, geschieht Folgendes:
Und da ist Ihre Antwort abgeschnitten. Um die Zeichenfolge zu formatieren, gehen Sie einfach wie folgt vor:
quelle
string.Format
Schritt durchführen, in dem die Zeichenfolge formatiert wird. Siehe meine Antwort unten.Die folgenden Runden der Zahlen, sondern zeigt nur bis zu 2 Dezimalstellen (Entfernen aller nachfolgenden Nullen), dank
.##
.http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
quelle
Ich schlage vor, Sie schneiden zuerst ab und formatieren dann:
Verwenden Sie die Konstante 100 für 2 abgeschnittene Stellen. Verwenden Sie eine 1 gefolgt von so vielen Nullen wie Ziffern nach dem gewünschten Dezimalpunkt. Verwenden Sie den Kulturnamen, den Sie zum Anpassen des Formatierungsergebnisses benötigen.
quelle
new CultureInfo("de-DE")
die statische Eigenschaft verwenden solltenCulture.InvariantCulture
Verwenden Sie für die einfachste Methode Zeichenfolgen im numerischen Format:
quelle
Ich benutze
price.ToString("0.00")
, um die führenden Nullen zu bekommenquelle
Die c # -Funktion, ausgedrückt von Kyle Rozendo:
quelle
Wie wäre es mit einer zusätzlichen Dezimalstelle, die gerundet und dann verworfen werden soll:
quelle
Das funktioniert bei mir
quelle
Ich weiß, dass dies ein alter Thread ist, aber ich musste das einfach tun. Während die anderen Ansätze hier funktionieren, wollte ich einen einfachen Weg, um viele Anrufe bei beeinflussen zu können
string.format
. Das HinzufügenMath.Truncate
zu allen Anrufen zu war also keine wirklich gute Option. Da ein Teil der Formatierung in einer Datenbank gespeichert ist, wurde dies noch schlimmer.Daher habe ich einen benutzerdefinierten Formatanbieter erstellt, mit dem ich der Formatierungszeichenfolge Kürzungen hinzufügen kann, z.
Die Implementierung ist ziemlich einfach und kann leicht auf andere Anforderungen erweitert werden.
quelle
Ich hatte dieses Problem mit Xamarin Forms und löste es damit:
quelle
Um die Währung anzuzeigen, können Sie Folgendes verwenden
"C"
:Ausgabe:
$1.99
quelle
Sie könnten auch Ihren eigenen IFormatProvider schreiben , obwohl Sie sich wahrscheinlich irgendwann überlegen müssen , wie Sie die eigentliche Kürzung vornehmen können.
Zumindest wäre es leicht wiederverwendbar.
Hier bei CodeProject finden Sie einen Artikel darüber, wie Sie Ihren eigenen IFormatProvider / ICustomFormatter implementieren . In diesem Fall ist das "Erweitern" eines vorhandenen numerischen Formats möglicherweise die beste Wahl. Es sieht nicht zu schwer aus.
quelle
Das Folgende kann nur für die Anzeige verwendet werden, die die Eigenschaft von String verwendet.
quelle
Lösung:
quelle
Beachten Sie auch die CultureInformation Ihres Systems. Hier meine Lösung ohne Rundung.
In diesem Beispiel müssen Sie nur die Variable MyValue als double definieren. Als Ergebnis erhalten Sie Ihren formatierten Wert in der Zeichenfolgenvariablen NewValue .
Hinweis - Setzen Sie auch die Anweisung C # using:
quelle