2012-01-30 2 views
1

пример объясняет вопросФормат десятичной localizated и отформатированный

ожидается: 17.590

Первая попытка:

const decimal value = 17.59m; 
const string format = "{0:0,000}"; 
var result = string.Format(format, value); 

Это приведет 0,018 конечно, потому что культура ан-США и , интерпретируется как разделитель тысяч.

Вторая попытка:

const decimal value = 17.59m; 
var result = Convert.ToString(value, CultureInfo.GetCultureInfo("pt-BR")); 

Теперь я получаю 17,59

Как я могу объединить формат и локализации с использованием каркасных asp.net функции?

+0

Вы не делаете никакого разбора здесь (то есть получение 'decimal' из строки), но _formatting_ получить строковое представление' decimal'. – Oded

ответ

2

Вы можете позвонить по телефону ToString непосредственно на сумму decimal - у нее есть перегрузки, которые берут строки формата и объект CultureInfo.

Обратите внимание, что в строке числового формата десятичный разделитель представлен как . (который преобразуется в соответствующий десятичный разделитель).

Это:

var result = 17.59m.ToString("0.000", CultureInfo.GetCultureInfo("pt-BR")); 

Производит:

17,590 
+0

Спасибо, опционально скрывал ToString с параметрами. – Custodio

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