Почему 0.ToString("#.##")
возвращает пустую строку? Разве не должно быть 0.00
или хотя бы 0 ?
Почему 0.ToString("#.##")
возвращает пустую строку? Разве не должно быть 0.00
или хотя бы 0 ?
Ответы:
#
в строковом формате указывают, что значение не является обязательным. Если вы хотите получить результат, 0.00
вам понадобится следующее:
0.ToString("0.00");
См. Здесь пользовательские числовые форматы, которые можно передать этому методу.
Поскольку в строке формата #
используется для обозначения необязательного символа-заполнителя; он используется только в случае необходимости для представления числа.
Если вы сделаете это вместо этого: 0.ToString("0.##");
вы получите:0
Интересно, что если вы сделаете это: 0.ToString("#.0#");
вы получите:.0
Если вам нужны все три цифры: 0.ToString("0.00");
производит:0.00
Судя по комментариям к этому ответу, ваш аргумент выглядит так:
он должен показывать «0», потому что зачем кому-либо видеть пустую строку, если числовое значение равно 0?
Ответ прост: у вас есть выбор, как вы хотите, чтобы это отображалось. Вот для чего нужны строки настраиваемого формата. Вы просто выбрали неверную строку формата для ваших нужд .
Согласно документации о Digit Placeholder .
Если форматируемое значение имеет цифру в позиции, где появляется '#' в строке формата, то эта цифра копируется в строку результата. В противном случае ничего не сохраняется в этой позиции в строке результата. Этот спецификатор никогда не отображает символ «0», если это не значащая цифра, даже если «0» - единственная цифра в строке. На нем будет отображаться символ «0», если это значащая цифра отображаемого числа. Строка формата «##» приводит к округлению значения до ближайшей цифры, предшествующей десятичной дроби, где всегда используется округление от нуля. Например, форматирование 34,5 с помощью «##» приведет к значению 35.
Если вы хотите, чтобы отображался ноль, используйте Zero PlaceHolder
Если форматируемое значение имеет цифру в позиции, где в строке формата появляется «0», то эта цифра копируется в строку результата. Положение крайнего левого «0» перед десятичной точкой и крайнего правого «0» после десятичной точки определяет диапазон цифр, которые всегда присутствуют в строке результата.
Спецификатор «00» приводит к округлению значения до ближайшей цифры, предшествующей десятичной дроби, где всегда используется округление от нуля. Например, форматирование 34,5 с помощью «00» приведет к значению 35.
Попробуй это 0.ToString("#,##; #,##;0")
Первый раздел применяется к положительным значениям, второй раздел применяется к отрицательным значениям, а третий раздел применяется к нулям.
Используйте это так:
0.ToString("#0.##")
0
after #
обеспечит установку выходного значения на 0, если значение равно 0, иначе оно отобразит значение. Так 0.0.ToString("#0.##")=0.00
и10.ToString("#.##")=10.00