Joh*_*n V -1 c# string decimal type-conversion
我将整个应用程序从“浮动”更改为十进制,但有一点,我无法解决此问题:
string a="9.02"
decimal d=Convert.ToDecimal(a);
Run Code Online (Sandbox Code Playgroud)
它抛出一个异常,incorrect input string format。为什么?
Convert.ToDecimal(string)方法CurrentCulture默认使用。这里是如何实现的;
public static decimal ToDecimal(String value)
{
if (value == null)
return 0m;
return Decimal.Parse(value, CultureInfo.CurrentCulture);
}
Run Code Online (Sandbox Code Playgroud)
可能您CurrentCulture的NumberDecimalSeparator属性不是.,这就是此方法抛出的原因FormatException。
作为替代方案,你可以使用InvariantCulture(它是NumberDecimalSeparator是.)在你的第二个参数Convert.ToDecimal(String, IFormatProvider)的方法,也可以Clone你CurrentCulture并设置它的NumberDecimalSeparatorPROPERT打点。
string a = "9.02";
decimal d = Convert.ToDecimal(a, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
或者
string a = "9.02";
var clone = (CultureInfo)CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.NumberDecimalSeparator = ".";
decimal d = Convert.ToDecimal(a, clone);
Run Code Online (Sandbox Code Playgroud)