我将整个应用程序从“浮动”更改为十进制,但在某一点上,我无法解决此问题:
string a="9.02"
decimal d=Convert.ToDecimal(a);
抛出异常incorrect input string format
。为什么呢?
答案 0 :(得分:4)
Convert.ToDecimal(string)
方法默认使用CurrentCulture
。这是怎样的implemented;
public static decimal ToDecimal(String value)
{
if (value == null)
return 0m;
return Decimal.Parse(value, CultureInfo.CurrentCulture);
}
可能您的CurrentCulture
NumberDecimalSeparator
property不是.
,这就是为什么这种方法会抛出FormatException
。
作为替代方案,您可以使用InvariantCulture
(NumberDecimalSeparator
.
为CurrentCulture
}作为Convert.ToDecimal(String, IFormatProvider)
方法中的第二个参数,或者您可以{ {3}} NumberDecimalSeparator
并将其string a = "9.02";
decimal d = Convert.ToDecimal(a, CultureInfo.InvariantCulture);
属性设置为点。
string a = "9.02";
var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.NumberDecimalSeparator = ".";
decimal d = Convert.ToDecimal(a, clone);
或
{{1}}