2016-07-19 18 views
0

Ich versuche, in eine Textdatei im festgelegten Format zu schreiben und habe Probleme, die Zahlen richtig zu formatieren. Es muss mit führenden Nullen und einer implizierten Dezimalzahl aufgefüllt werden.Left-Pad eine Gleitkommazahl, ohne nachfolgende Nullen nach dem Dezimalpunkt zu verlieren

Beispiel:

43.80 

Der Ausgang sein müßte: weit So

0000004380 

, habe ich versucht, die doppelte auf eine Zeichenfolge, ersetzen Sie die Dezimalzahl zu konvertieren, und dann Pad mit " 0 ".

((amount.ToString()).Replace(".","")).PadLeft(10, '0') 

Das Problem damit ist, wenn die Zahl mit Nullen endet. Das obige Beispiel erscheint als:

0000000438 

Irgendwelche Vorschläge?

+0

'Decimal.Truncate (Betrag * 100m) .ToString (" 0 "). PadLeft (10, '0')' würde es tun, denke ich. –

+0

Mögliches Duplikat von [C# Füllmenge mit Nullen] (http://stackoverflow.com/questions/9587819/c-sharp-padding-amount-with-zeros) –

Antwort

1
decimal value = 34.80M; 
int intVal = (int)(value * 100); 
return intVal.ToString("0000000000"); 
0

Sie könnten versuchen:

((string.Format("{0:0.00}", amount)).Replace(".","")).PadLeft(10, '0') 

diese Weise können Sie nicht die 2. Dezimalstelle verloren gehen, wenn der Wert 0.

0

ist können Sie ein .ToString() übergeben Format-String in wie in diesem Artikel beschrieben: https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

Hat der eingehende Wert immer zwei Dezimalstellen? Wenn ja, könnten Sie mit 100 multiplizieren loswerden Dezimalsystem zu bekommen, und dann zu .ToString ("D10")

(Int) (43.80 * 100) .ToString ("D10")

0

Dies sollte mach die Arbeit: $"{(int)(amount * 100):D010}"