Почему 0.ToString( "#. ##" ) возвращает пустую строку вместо 0.00 или не менее 0?

Почему 0.ToString("#.##") возвращает пустую строку? Не должно быть 0.00 или не менее 0?

Ответ 1

# в строковом формате указывает, что это значение является необязательным. Если вы хотите получить вывод 0.00, вам понадобится следующее:

0.ToString("0.00");

Смотрите здесь для пользовательских числовых форматов, которые могут быть переданы этому методу.

Ответ 2

Поскольку в строке формата # используется для обозначения необязательного символьного заполнителя; он используется только в случае необходимости для представления числа.

Если вы сделаете это вместо: 0.ToString("0.##");, вы получите: 0

Интересно, если вы это сделаете: 0.ToString("#.0#"); вы получите: .0

Если вы хотите, чтобы все три цифры: 0.ToString("0.00"); выдает: 0.00


Из комментариев к этому ответу, кажется, ваш аргумент,

он должен показывать "0", потому что для кого-нибудь когда-либо понадобится увидеть пустую строку, если числовое значение равно 0?

Ответ прост: у вас есть выбор, как вы хотите, чтобы он отображался. Это то, для чего предназначены строки пользовательского формата. Вы просто выбрали неверную строку формата для своих нужд.

Ответ 3

В соответствии с документацией о держателе цифр.

Если форматированное значение имеет цифру в позиции, где в строке формата появляется символ "#", то эта цифра копируется в строку результатов. В противном случае ничего сохраненные в этой позиции в результирующей строке. Этот спецификатор никогда не отображает символ "0" , если он не является значащей цифрой, даже если "0" является единственной цифрой в строке. Это будет отобразите символ "0" , если это значимая цифра в отображаемом номере. Строка формата "##" вызывает округление значения до ближайшей цифры, предшествующей десятичное число, где округление от нуля всегда используется. Например, форматирование 34.5 с помощью "##" приведет к значению 35.

Если вы хотите, чтобы нуль отображался, используйте Zero PlaceHolder

f форматируемое значение имеет цифру в позиции, где в строке формата отображается "0" , а затем цифра копируется в строку результатов. Положение leftmost '0' перед десятичной точкой и самый правый "0" после десятичной точки определяет диапазон цифр, которые всегда присутствуют в результирующей строке.
Спецификатор "00" вызывает округление значения до ближайшей цифры, предшествующей десятичной, где всегда используется округление от нуля. Например, гостиницы 34.5 с "00" приведет к значению 35.

Ответ 5

Используйте это так:

0.ToString("#0.##")

0 после # обеспечит установку выходного значения на 0, если значение равно 0, иначе будет отображаться значение. Так 0.0.ToString("#0.##")=0.00 и 10.ToString("#.##")=10.00