Chcę dodać dwa dziesiętne dziesiętne do tych liczb, które mają przynajmniej jeden dziesiętny. Używam C #, a teraz mam tę instrukcję, ale zwraca tylko jedną pozycję dziesiętną:

string.Format("{0:#,##0.#}", number)

Co muszę umieścić w tej instrukcji, aby wyświetlić numer z dwiema dziesiętną pozycją, jeśli liczba ma przynajmniej jeden dziesiętny? Wskazać, że jeśli numer nie ma dziesięcia, numer jest pokazany bez liczb dziesiętnych. To jest poprawne dla tego, czego potrzebuję.

Edytuj odpowiedź z przykładami:

4.156,5 musi wynosić 4,156,50

8.150 musi wynosić 8.150

12.230,22 musi wynosić 12,230,22

Edytuj 2: Zauważ, że chcę również utrzymać separator kropki dla tysiąca cyfr. Chcę więc znaleźć formułę formatu łańcucha, który może obejmować te warianty.

Z góry dziękuję.

Pozdrowienia

1
Levimatt 7 październik 2020, 13:45

1 odpowiedź

Najlepsza odpowiedź

Opcja 1:

Jednym pomysłem byłoby pierwsze format z dwoma dziesiętnymi:

var str = string.Format("{0:#,##0.00}", number);

Po tym, jeśli ciąg kończy się "(Decimalseparator) 00", usuń tę część:

str = str.Replace(CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator + "00", "")

Nie miły, ale działa

Opcja 2:

Najpierw pomnóż przez 100 i okrągły do następnej liczby całkowitej:

Var zaokrąglony = (int) matematyka.round (100 * numer);

Następnie sprawdź, czy liczba całkowita jest podzielna przez 100 i wybierz jeden z dwóch strun formatu:

string.Format(rounded % 100 == 0 ? "{0:#,##0}" : "{0:#,##0.00}", number);
1
Klaus Gütter 7 październik 2020, 13:11