C# · 12月 31, 2021

c# – Convert.ToDouble(“4089.90”)输出40.899,00为什么?

大家好,我正在开发一个使用数字精度的软件,但是我有这个问题,当我把一个字符串转换成double时,会输出一个不同的文化.

例如我使用

Convert.ToDouble(“4089.90”); // it outputs 40.899,00

在我的电脑中,奇怪的原因是可以正常工作,但在客户端的PC上(在区域设置中具有相同的文化)显示了后者的输出.我知道我可以修复它

Convert.ToDouble(“4089.90”,System.Globalization.CultureInfo.InvariantCulture);

但是程序中有很多代码使用“Convert.ToDouble”,我不想改变它,另一方面我想明白为什么会发生这种情况.

提前致谢.

解决方法 您可以为您的线程设置文化: Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;