c # wie String.Format Dezimal mit unbegrenzten Dezimalstellen?

7

Ich muss eine Dezimalzahl in eine formatierte Zeichenfolge mit tausend Gruppen und unbegrenzten (variablen) Dezimalzahlen konvertieren:

%Vor%

Ich habe versucht, String.Format ("{0: #, #. #}", dezimal) , aber es trimmt jede Zahl auf maximal 1 Dezimalstelle.

    
jurev 17.10.2011, 14:23
quelle

3 Antworten

16

Sie können # mehrfach verwenden (siehe Benutzerdefinierte Zahlenformat-Zeichenfolgen ):

%Vor%

Wenn Sie eine Zahl direkt formatieren, können Sie auch decimal.ToString mit der Formatzeichenfolge.

Es gibt jedoch keine Möglichkeit, " unbegrenzte Dezimalzahlen" einzubeziehen. Ohne eine Bibliothek, die Gleitkommazahlen beliebiger Genauigkeit unterstützt (zum Beispiel mit etwas wie BigFloat ) Extreme Numerics ), werden Sie schließlich auf Präzisionsprobleme stoßen. Sogar der Dezimal-Typ hat eine Grenze für seine Genauigkeit (28-29 signifikante Stellen). Darüber hinaus werden Sie auf andere Probleme stoßen.

    
Reed Copsey 17.10.2011, 14:31
quelle
5

Wie gesagt, der Dezimaltyp hat eine Genauigkeit von 28 bis 29 Ziffern.

%Vor%

Hier gibt es 30x # nach dem Dezimaltrennzeichen: -)

Ich habe ein # mit 0 geändert, sodass 0.15 nicht als .15 geschrieben wird.

    
xanatos 17.10.2011 14:32
quelle
1

Das sollte den Trick machen

%Vor%

das Ersetzen von Dezimalzahlen durch andere Typen sollte ebenfalls funktionieren.

    
Alex 17.10.2011 14:41
quelle

Tags und Links