3

我已经在西班牙 MS Windows Server 下安装了 C# 应用程序。

所以这段代码以错误的方式工作。

decimal? top = 80.0m;
double convertedTop = (double)decimal.Parse(top.ToString(), CultureInfo.InvariantCulture); 

convertTop 是 80000 但它应该是 80.0

4

1 回答 1

7

不要那样做。

您的代码效率极低。

你应该把它改成

double convertedTop = Convert.ToDouble(top);

如果编译时类型topdecimalor decimal?(相对于objector IConvertibleor ValueType),您可以使用更高效的编译时强制转换:

double convertedTop = (double)top;

要回答这个问题,top.ToString()是文化敏感的。
你也需要经过CultureInfo.InvariantCulture那里。
Nullable<T>不会提升ToString(IFormatProvider),因此您需要执行此操作Valuenull明确处理。

于 2013-03-05T18:07:45.620 回答