Как использовать независимый от локали десятичный и числовой разделитель в строке формата? - PullRequest
2 голосов
/ 17 марта 2011

Я использую следующее для форматирования значения столбца (привязанного к значению типа decimal?):

[DisplayFormat(DataFormatString = "{0:N2}")] 

Теперь я хочу изменить его на следующий формат:

[DisplayFormat(DataFormatString = "{0:#,###.00##}")]

Но это не зависит от локали, так как я жестко кодирую десятичный и числовой разделители. По сути, я хочу отобразить строку с соответствующими числовыми и десятичными разделителями. Кроме того, я хочу минимум два нуля после десятичного разделителя и максимум 4 нуля. Можно ли указать такую ​​строку в время компиляции?

1 Ответ

7 голосов
/ 17 марта 2011

Но, это не зависит от локали, так как я жестко кодирую десятичный и числовой разделитель

Нет, вы не;в спецификаторах формата . и , означают «десятичный разделитель» и «разделитель тысяч» соответственно, а не буквальные запятые и точки.Это должно работать правильно.Например, «#, ###. 00 ##» в культуре fr-FR должно выглядеть как «1 234,56»:

var culture = CultureInfo.GetCultureInfo("fr-fr");
decimal d = 1234.56M;
string s = d.ToString("#,###.00##'", culture); // "1 234,56"
...