Как вставить разделитель тысяч (запятую) с помощью convert to double - PullRequest
44 голосов
/ 11 августа 2010

Я пытаюсь отформатировать содержимое текстового поля:

this.lblSearchResults1.Text =
    Convert.ToDouble(lblSearchResults1.Text).ToString(); 

Как мне изменить это так, чтобы я включал в текст разделители-запятые / тысячи?

т.е. 1000 вместо 1000.

Ответы [ 5 ]

70 голосов
/ 11 августа 2010

Просмотр строк стандартного числового формата :

Вы можете наиболее легко использовать 'N', что будет правильно делать в зависимости от культуры пользователя, поэтому в вашем случае вы можете просто добавить "N" в качестве параметра в ToString

([double]12345.67).ToString("N")

12,345.67

50 голосов
/ 11 августа 2010

Для полного пользовательского контроля используйте ... .ToString("#,##0.00") или его варианты. . и , будут заменены зависимыми от культуры символами. В большинстве стран Европы вы получите 1,234,56.
Еще одна полезная картинка - 0.0#.

Чтобы использовать шаблон в зависимости от пользовательской (или выбранной) культуры, используйте Числовой («N») спецификатор формата , как в .ToString("N") или "... {0:N}".

8 голосов
/ 11 августа 2010

Если вы присмотритесь к Стандартным строкам числового формата , вы можете попробовать одно из следующих:

.ToString("n", CultureInfo.GetCultureInfo("en-US"))
.ToString("n", CultureInfo.GetCultureInfo("de-DE"))
.ToString("n", CultureInfo.CurrentCulture)
5 голосов
/ 20 мая 2014

Альтернативой вышеупомянутым ответам будет использование

this.lblSearchResults1.Text = String.Format("{0:N}", Convert.ToDouble(lblSearchResults1.Text))

Если вам нужны десятичные разряды, просто введите количество десятичных разрядов, которое вы хотите иметь после N. Следующий пример вернет значение с двумя десятичными разрядами.

this.lblSearchResults1.Text = String.Format("{0:N2}", Convert.ToDouble(lblSearchResults1.Text))

См. http://msdn.microsoft.com/en-us/library/system.string.format.aspx для получения дополнительной информации.

1 голос
/ 11 августа 2010

Самый простой способ сделать это будет что-то вроде:

Convert.ToDouble("1234567.12345").ToString("N")

Если вы хотите контролировать десятичные разряды, вы можете сделать что-то вроде:

Convert.ToDouble("1234567.12345").ToString("N3")

В общем, посмотрите на перегрузки ToString для более захватывающих возможностей.

...