Convert.ToDecimal不适用于字符串" 9.02"

时间:2014-08-23 11:28:19

标签: c# string type-conversion decimal

我将整个应用程序从“浮动”更改为十进制,但在某一点上,我无法解决此问题:

string a="9.02"

decimal d=Convert.ToDecimal(a);

抛出异常incorrect input string format。为什么呢?

1 个答案:

答案 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

作为替代方案,您可以使用InvariantCultureNumberDecimalSeparator .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}}