Dlaczego 0.ToString("#.##")
zwraca pusty ciąg? Nie powinno być, 0.00
czy przynajmniej 0 ?
114
#
w formacie ciągu wskazują, że wartość jest opcjonalna. Jeśli chcesz uzyskać dane wyjściowe 0.00
, potrzebujesz:
0.ToString("0.00");
Zobacz tutaj niestandardowe formaty liczbowe, które można przekazać do tej metody.
Ponieważ w ciągu formatu,
#
jest używany do oznaczenia opcjonalnego znaku zastępczego; jest używany tylko w razie potrzeby do reprezentowania liczby.Jeśli zamiast tego zrobisz to:
0.ToString("0.##");
otrzymasz:0
Co ciekawe, jeśli to zrobisz:
0.ToString("#.0#");
otrzymasz:.0
Jeśli chcesz mieć wszystkie trzy cyfry:
0.ToString("0.00");
daje:0.00
Z komentarzy do tej odpowiedzi wynika, że twój argument brzmi:
Odpowiedź jest prosta: masz wybór, w jaki sposób chcesz, aby był wyświetlany. Do tego służą ciągi formatu niestandardowego. Po prostu wybrałeś nieprawidłowy ciąg formatu dla swoich potrzeb .
źródło
Zgodnie z dokumentacją dotyczącą symbolu zastępczego cyfry .
Jeśli chcesz, aby zero było wyświetlane, użyj Zero PlaceHolder
źródło
Spróbuj tego
0.ToString("#,##; #,##;0")
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#SectionSeparator
Pierwsza sekcja dotyczy wartości dodatnich, druga sekcja dotyczy wartości ujemnych, a trzecia dotyczy zer.
źródło
Użyj tego w ten sposób:
0
after#
zapewni ustawienie wartości wyjściowej na 0, jeśli wartość wynosi 0, w przeciwnym razie wyświetli wartość. Więc0.0.ToString("#0.##")=0.00
i10.ToString("#.##")=10.00
źródło