Как использовать Convert.ChangeType (), когда conversionType является десятичным, а ввод - «40.00»

Я имею в виду, я хочу преобразовать это:

string a = "40.00";
Convert.ChangeType(a, typeof(decimal))

результат будет десятичное значение «4000»

проблема в том, что вызов convert находится в очень абстрактном универсальном методе в преобразователе xmlToObject. Я не хочу программно добавлять множество разных исключений для правильного преобразования.

С уважением, Крис

25
задан masterchris_99 11 October 2011 в 11:05
поделиться

2 ответа

Десятичная точка не может быть представлена ​​символом точки в вашей текущей культуре.

В общем, при выполнении преобразований, инвариантных к культуре, лучше указывать CultureInfo.InvariantCulture в качестве аргумента IFormatProvider для метода :

(decimal) Convert.ChangeType(a, typeof(decimal), CultureInfo.InvariantCulture);
44
ответ дан 28 November 2019 в 20:51
поделиться

Следующий код

 string s = "40.00";
 decimal d = (decimal)Convert.ChangeType(s, typeof(decimal));

делает d = 40. Это выглядит хорошо для меня. В чем именно ваша проблема?

Редактировать: Кажется, у вас могут быть проблемы с используемой культурой. Сделайте это для конвертации:

string s = "40.00";
decimal d = (decimal)Convert.ChangeType(s, typeof(decimal), CultureInfo.InvariantCulture);
2
ответ дан 28 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: