当conversionType为十进制且输入为"40.00"时,如何使用Convert.ChangeType()

mas*_*_99 25 .net c# generics decimal

我的意思是,我想转换这个:

string a = "40.00";
Convert.ChangeType(a, typeof(decimal))
Run Code Online (Sandbox Code Playgroud)

结果是十进制值"4000"

问题是转换调用是在xmlToObject转换器中的一个非常抽象的泛型方法.我不想以编程方式添加许多不同的异常来正确转换.

对克里斯说

Fré*_*idi 44

您当前文化中的句点字符可能不会表示小数点.

通常,在执行文化不变转换时,最好将CultureInfo.InvariantCulture指定为方法IFormatProvider参数:

(decimal) Convert.ChangeType(a, typeof(decimal), CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 5

该转换很可能是使用使用句点作为千位分隔符而不是小数点分隔符的区域性来完成的。

转换值时指定区域性:

Convert.ToDecimal(a, CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)