在非英语Windows下转换十进制
本文关键字:转换 十进制 Windows 英语 | 更新日期: 2023-09-27 18:02:15
我已经在西班牙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?
(而不是object
或IConvertible
或ValueType
),则可以使用更有效的编译时强制转换:
double convertedTop = (double)top;
要回答这个问题,top.ToString()
是文化敏感的。
你也需要通过CultureInfo.InvariantCulture
。Nullable<T>
不会提升ToString(IFormatProvider)
,所以你需要在Value
上这样做,并显式地处理null
。