我已经在西班牙 MS Windows Server 下安装了 C# 应用程序。
所以这段代码以错误的方式工作。
decimal? top = 80.0m;
double convertedTop = (double)decimal.Parse(top.ToString(), CultureInfo.InvariantCulture);
convertTop 是 80000 但它应该是 80.0
我已经在西班牙 MS Windows Server 下安装了 C# 应用程序。
所以这段代码以错误的方式工作。
decimal? top = 80.0m;
double convertedTop = (double)decimal.Parse(top.ToString(), CultureInfo.InvariantCulture);
convertTop 是 80000 但它应该是 80.0
您的代码效率极低。
你应该把它改成
double convertedTop = Convert.ToDouble(top);
如果编译时类型top
是decimal
or decimal?
(相对于object
or IConvertible
or ValueType
),您可以使用更高效的编译时强制转换:
double convertedTop = (double)top;
要回答这个问题,top.ToString()
是文化敏感的。
你也需要经过CultureInfo.InvariantCulture
那里。
Nullable<T>
不会提升ToString(IFormatProvider)
,因此您需要执行此操作Value
并null
明确处理。