繁体   English   中英

在非英语Windows下转换十进制

[英]Convert decimal under non-english Windows

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

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

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

convertedTop是80000,但它应该是80.0

不要那样做。

您的代码效率极低。

你应该把它改成

double convertedTop = Convert.ToDouble(top);

如果top的编译时类型是decimal还是decimal? (与objectIConvertibleValueType相反),您可以使用更高效的编译时转换:

double convertedTop = (double)top;

要回答这个问题, top.ToString()是文化敏感的。
您还需要在那里传递CultureInfo.InvariantCulture
Nullable<T>不提升ToString(IFormatProvider) ,因此您需要在Value上执行此操作并显式处理null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM