【问题标题】:Convert.ToDecimal does not work with string "9.02"Convert.ToDecimal 不适用于字符串“9.02”
【发布时间】:2014-10-17 03:48:26
【问题描述】:

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

string a="9.02"

decimal d=Convert.ToDecimal(a);

它抛出一个异常,incorrect input string format。为什么?

【问题讨论】:

标签: c# string type-conversion decimal


【解决方案1】:

Convert.ToDecimal(string) 方法默认使用CurrentCulture。这是implemented;

public static decimal ToDecimal(String value)
{
   if (value == null)
       return 0m;
   return Decimal.Parse(value, CultureInfo.CurrentCulture);
}

可能您的CurrentCultureNumberDecimalSeparator property 不是.,这就是该方法抛出FormatException 的原因。

作为替代方案,您可以使用InvariantCulture(即NumberDecimalSeparator.)作为Convert.ToDecimal(String, IFormatProvider) 方法中的第二个参数,或者您可以将Clone CurrentCulture 设置为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);

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 2017-03-25
    • 2014-07-13
    • 1970-01-01
    • 2014-09-04
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多