c# wie String.Format dezimal mit unbegrenzten Nachkommastellen?
Ich brauchen, um zu konvertieren eine dezimale Zahl in eine formatierte Zeichenfolge mit tausend Gruppen und unbegrenzte (variable) Dezimalzahlen:
1234 -> "1,234" 1234.567 -> "1,234.567" 1234.1234567890123456789 -> "1,234.1234567890123456789"
Ich habe versucht, String.Format("{0:#,#.#}", dezimal), aber es kürzt eine beliebige Anzahl max 1 Dezimalstelle.
- Beachten Sie, dass die decimal-Datentyp hat eine Genauigkeit von 28-29 Ziffern
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie # mehrfach (siehe Benutzerdefinierte Zahlenformatzeichenfolgen):
Oder, wenn Sie gerade formatieren einer Zahl direkt, können Sie auch einfach verwenden dezimal.ToString mit dem format-string.
Jedoch, dort ist keine Weise, zu gehören "unbegrenzte Dezimalzahlen". Ohne eine Bibliothek Unterstützung beliebiger Genauigkeit Gleitkomma-zahlen (zum Beispiel, mit so etwas wie BigFloat von Extreme Numerik), Sie laufen in Präzisions-Probleme schließlich. Auch die decimal-Typ hat ein limit, Ihre Präzision (28-29 signifikante stellen). Darüber hinaus führen Sie in andere Probleme.
Als ich gesagt habe, den decimal-Datentyp hat eine Genauigkeit von 28-29 stellen.
Hier gibt es 30x
#
nach dem Dezimaltrennzeichen 🙂Habe ich geändert man
#
mit0
so dass0.15
ist nicht so geschrieben, wie.15
.dies sollte den trick tun
ersetzen von dezimal mit anderen Typen sollten auch funktionieren.