Warum wird 0.ToString("#.##")
eine leere Zeichenfolge zurückgegeben? Sollte es nicht sein 0.00
oder mindestens 0 ?
114
#
Geben Sie im Zeichenfolgenformat an, dass der Wert optional ist. Wenn Sie die Ausgabe erhalten möchten, 0.00
benötigen Sie Folgendes:
0.ToString("0.00");
Sehen Sie hier für die benutzerdefinierten Zahlenformate , die an diese Methode übergeben werden kann.
Da in einer Formatzeichenfolge das
#
verwendet wird, um einen optionalen Zeichenplatzhalter zu kennzeichnen. Es wird nur verwendet, wenn dies zur Darstellung der Nummer erforderlich ist .Wenn Sie dies stattdessen tun, erhalten
0.ToString("0.##");
Sie:0
Interessanterweise erhalten Sie, wenn Sie dies tun
0.ToString("#.0#");
:.0
Wenn Sie alle drei Ziffern möchten:
0.ToString("0.00");
Erzeugt:0.00
Aus den Kommentaren zu dieser Antwort geht hervor, dass Ihr Argument lautet:
Die Antwort ist einfach: Sie haben die Wahl, wie es angezeigt werden soll. Dafür sind die benutzerdefinierten Formatzeichenfolgen gedacht. Sie haben einfach die falsche Formatzeichenfolge für Ihre Anforderungen ausgewählt .
quelle
Gemäß der Dokumentation zum Ziffernplatzhalter .
Wenn die Null angezeigt werden soll, verwenden Sie den Zero PlaceHolder
quelle
Versuche dies
0.ToString("#,##; #,##;0")
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator
Der erste Abschnitt gilt für positive Werte, der zweite Abschnitt gilt für negative Werte und der dritte Abschnitt gilt für Nullen.
quelle
Verwenden Sie es so:
0
after stellt#
sicher, dass der Ausgabewert auf 0 gesetzt wird, wenn der Wert 0 ist. Andernfalls wird der Wert angezeigt. Also0.0.ToString("#0.##")=0.00
und10.ToString("#.##")=10.00
quelle