Почему 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.
Ответ 4
Попробуйте это 0.ToString("#,##; #,##;0")
Первый раздел относится к положительным значениям, второй раздел относится к отрицательным значениям, а третий раздел относится к нулям.
Ответ 5
Используйте это так:
0.ToString("#0.##")
0
после #
обеспечит установку выходного значения на 0, если значение равно 0, иначе будет отображаться значение. Так 0.0.ToString("#0.##")=0.00
и 10.ToString("#.##")=10.00