#c# #string #parsing #decimal
#c# #строка #синтаксический анализ #десятичная дробь
Вопрос:
Я бы хотел String.Format
, чтобы десятичная дробь имела как тысячу разделителей, так и принудительные десятичные знаки (3).
Например:
Ввод:
123456,12
78545,8
Вывод:
123.456,120
78.545,800
Я пробовал
String.Format("{0:0.0,000}", input);
но это дает только тысячу разделителей, но не принудительно вводит десятичные разряды.
Комментарии:
1. Пользовательские числовые форматы не зависят от того, форматирует ли ваша культура десятичную точку точкой или запятой. Это было бы болезненно. Используйте, скажем, «{0:#,##0.000}» вместо этого.
Ответ №1:
В строке пользовательского числового формата точка ( .
) используется для «локализованного десятичного разделителя». Т.Е. даже если ваш текущий язык использует запятую в качестве десятичного разделителя, вы должны использовать точку в строке формата. Аналогично запятая ( ,
) используется для локализованного разделителя тысяч.
Поскольку ваш формат ставит запятую после точки, все будет запутано (разделители тысяч не применяются после десятичной точки).
Так что попробуйте:
String.Format("{0:#,##0.000}", input);
(Использование #
для цифр только для включения if input
достаточно велико.)
Ответ №2:
String.Format("{0:N3}", input)
Смотрите Спецификатор формата N
Ответ №3:
Либо:
string.Format("{0:N3}", input)
Или явно (без учета текущей культуры):
string.Format("{0:#,##0.000}", input)