Dlaczego 0.ToString("#.##")
zwraca pusty ciąg? Nie powinno być, 0.00
czy przynajmniej 0 ?
Dlaczego 0.ToString("#.##")
zwraca pusty ciąg? Nie powinno być, 0.00
czy przynajmniej 0 ?
Odpowiedzi:
#
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:
powinno pokazywać „0”, ponieważ po co ktoś miałby chcieć zobaczyć pusty ciąg, jeśli wartość liczbowa wynosi 0?
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 .
Zgodnie z dokumentacją dotyczącą symbolu zastępczego cyfry .
Jeśli formatowana wartość ma cyfrę w miejscu, w którym w ciągu formatu pojawia się znak „#”, to ta cyfra jest kopiowana do ciągu wynikowego. W przeciwnym razie nic nie jest przechowywane w tej pozycji w ciągu wynikowym. Ten specyfikator nigdy nie wyświetla znaku „0”, jeśli nie jest to cyfra znacząca, nawet jeśli „0” jest jedyną cyfrą w ciągu. Wyświetli znak „0”, jeśli jest to znacząca cyfra w wyświetlanej liczbie. Ciąg formatu „##” powoduje zaokrąglenie wartości do najbliższej cyfry poprzedzającej przecinek, przy czym zawsze stosowane jest zaokrąglanie w kierunku od zera. Na przykład sformatowanie 34,5 za pomocą „##” dałoby wartość 35.
Jeśli chcesz, aby zero było wyświetlane, użyj Zero PlaceHolder
Jeśli formatowana wartość ma cyfrę w miejscu, w którym w ciągu formatu pojawia się „0”, ta cyfra jest kopiowana do ciągu wynikowego. Pozycja „0” najbardziej na lewo przed kropką dziesiętną i „0” z prawej strony po przecinku określa zakres cyfr, które są zawsze obecne w ciągu wynikowym.
Specyfikator „00” powoduje zaokrąglenie wartości do najbliższej cyfry poprzedzającej cyfrę dziesiętną, przy czym zawsze stosowane jest zaokrąglanie w kierunku od zera. Na przykład sformatowanie 34,5 za pomocą „00” zwróci wartość 35.
Spróbuj tego 0.ToString("#,##; #,##;0")
Pierwsza sekcja dotyczy wartości dodatnich, druga sekcja dotyczy wartości ujemnych, a trzecia dotyczy zer.
Użyj tego w ten sposób:
0.ToString("#0.##")
0
after #
zapewni ustawienie wartości wyjściowej na 0, jeśli wartość wynosi 0, w przeciwnym razie wyświetli wartość. Więc 0.0.ToString("#0.##")=0.00
i10.ToString("#.##")=10.00