通过double传递Convert.ChangeType问题

时间:2014-07-16 09:11:47

标签: c# type-conversion

我正在使用这行代码将字符串转换为int16int32double和其他类型:

var convertedValue = value == null ? null : Convert.ChangeType(value, targetType, CultureInfo.InvariantCulture);

任何人都可以向我解释为什么convertedValue被设置为例如205.0value = "20,5"加倍后targetType

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

它是一个小数分隔符。像20000一样可以用字符串写成20,000。同样,当您将20,000转换为双倍时,它将为您提供20000。

答案 1 :(得分:0)

我的VB.Net项目遇到了类似的问题。原因是编译器使用逗号("20,5")来处理值,就像字符串一样,因为十进制值没有小数点,因此它将"20,5"转换为205。我通过使用

替换逗号来解决这个问题
.ToString().Replace(",", ".")