Вы пробовали это: -

у добавить запятую к десятичным числам каждые 3 цифры, используя c #.
Я написал этот код:

double a = 0; 
a = 1.5;
Interaction.MsgBox(string.Format("{0:#,###0}", a));

Но это возвращает 2.
Где я не прав?
Пожалуйста, опишите, как я могу это исправить?

 GregC28 мая 2011 г., 13:18
@raj: ответы здесь разные.
 ruffin31 дек. 2014 г., 21:23
@GregC Хотя, не обязательно лучшиечем тот, который принят там, ; ^)
 parapura rajkumar28 мая 2011 г., 13:12

Ответы на вопрос(6)

Решение Вопроса
 double a = 1.5;
Interaction.MsgBox(string.Format("{0:#,###0.#}", a));
 Bala R28 мая 2011 г., 13:19
В вашей строке формата вы не обращались к десятичной части числа, поэтому она округляла его до 2. Таким образом. используйте .0 в строке формата.
 Shahin28 мая 2011 г., 13:12
Это правильно, спасибо, не могли бы вы описать первый аргумент строки. Формат?
 Alex Aza28 мая 2011 г., 22:21
У меня вопрос: отличается ли формат в ответе от#,0.#?

Попробуйте следующий формат:

string.Format("{0:#,0.0}", a)
 Shahin28 мая 2011 г., 13:14
Спасибо. Не могли бы вы описать код?
 Darin Dimitrov28 мая 2011 г., 13:20
@shaahin, строковые форматы для двойников хорошо объяснены вэта статья, Что касается 10.0, если вы не хотите, чтобы десятичное число, если оно равно 0, вы можете использовать{0:#,#.#}.
 Shahin28 мая 2011 г., 13:20
Это работает, но для числа 10 он возвращает 10.0. Должен ли я заменить 10.0 ничем или можно улучшить функцию string.Format?

Вот как это сделать:

 string.Format("{0:0,0.0}", a)

Существуетстрока стандартного формата это разделит тысячи единиц:N

float value = 1234.512;

value.ToString("N"); // 1,234.512
String.Format("N2", value); // 1,234.51

Вы пробовали это: -

string.Format("{0:0,000.0}", 1.5);

## 0 означает запись хотя бы одной цифры и нуля и десятичных групп цифр с запятыми. Поэтому он округляет 1,5 к 2, поскольку не может записывать десятичные дроби. Попробуйте #, ## 0,00 вместо. Вы получите 1,50

Ваш ответ на вопрос