我在西班牙语MS Windows Server下安装了C#应用程序。
所以这段代码的工作方式错误。
decimal? top = 80.0m;
double convertedTop = (double)decimal.Parse(top.ToString(), CultureInfo.InvariantCulture);
convertedTop为80000,但应为80.0
答案 0 :(得分:7)
您的代码效率非常低。
您应该将其更改为
double convertedTop = Convert.ToDouble(top);
如果top
的编译时类型为decimal
或decimal?
(与object
或IConvertible
或ValueType
相对),你可以使用更高效的编译时转换:
double convertedTop = (double)top;
要回答这个问题,top.ToString()
对文化非常敏感
你也需要在那里通过CultureInfo.InvariantCulture
Nullable<T>
无法解除ToString(IFormatProvider)
,因此您需要在Value
上执行此操作并明确处理null
。