2015-06-02 4 views
3

Может кто-нибудь помочь мне понять, почему переменный «текст» является пустой ниже фрагментом кода,Double.ToString возвращается пустым 0

double d = 0; 

var text = d.ToString("##,###,###,###"); 

Если изменить значение г любого ненулевого значения, я получите правильное строковое представление.

+3

попробуйте с помощью 'var text = d.ToString (" ##, ###, ###, ## 0 ");' если вы не хотите пустых строк. –

+0

уже есть формат для чего вы хотите. 'd.ToString (" N0 ")' – Franck

ответ

10

От The "#" Custom Specifier

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

Если вы хотите отобразить его как 00,000,000,000, вы можете использовать The "0" Custom Specifier. Но помните, что этот спецификатор ставит ноль, если он не соответствует никакому числовому значению в вашем двойном.

Это значит, что (15).ToString("00,000,000,000") будет генерировать 00,000,000,015.

Если вы хотите отобразить 0, а также другие, чем другие ваши ценности, просто измените свой последний формат цифр от # до 0 как ##,###,###,##0.

Но лучший способ может использовать The numeric "N" format specifier по-моему. Эти спецификаторы генерируют тысячи разделителей групп и размер, десятичный разделитель и его размер (вы можете опустить эту часть с N0) возможным отрицательным знаком и его шаблоном.

double d = 0; 
var text = d.ToString("N0"); 

Также я хочу упомянуть о , в вашем строковом формате. Вы хотите, чтобы группа, как тысячи сепаратора, (и так как вы не используете любойIFormatProvider в коде), если ваши CurrentCulture «ы NumberGroupSeparator отличается , характера, будет отображаться что характер, не ,.

Например, Я в Турции, и моя нынешняя культура tr-TR, и эта культура имеет . как NumberGroupSeparator. Вот почему ваш код будет генерировать результат в моей машине как ##.###.###.### формат не ##,###,###,###.

+1

Спасибо за эту информацию! Это объясняет это хорошо. – theraneman

0

Для форматирования строк # представляет собой необязательное место. Например, строка формата, например «# 0», отображает первый числовой символ, если число равно или больше 10. Поэтому вам нужно преобразовать ваши хэштеги в ноль, если вы хотите показать свой номер.

Смежные вопросы