Чому 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 .
Якщо значення, яке відформатоване, має цифру в позиції, де у рядку формату відображається символ "#", то ця цифра копіюється в рядок результатів. В іншому випадку нічого не зберігається в цьому положенні в рядку результатів. Цей специфікатор ніколи не відображає символ "0", якщо він не є значною цифрою, навіть якщо "0" є єдиною цифрою у рядку. Він буде відображати символ "0", якщо це значна цифра в кількості, що відображається. Рядок формату "##" призводить до округлення значення до найближчої цифри, що передує десятковій, де завжди використовується округлення від нуля. Наприклад, форматування 34.5 з "##" призведе до значення 35.
Якщо ви хочете, щоб нуль відображався, використовуйте Zero PlaceHolder
f, якщо значення, яке відформатоване, має цифру в тому положенні, де у рядку формату відображається '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