Convert.ToDouble("4089.90")输出40.899,00为什么?

Nel*_*nda 10 c# asp.net

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

比如我用

Convert.ToDouble("4089.90"); // it outputs 40.899,00
Run Code Online (Sandbox Code Playgroud)

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

Convert.ToDouble("4089.90", System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

但是程序中有很多代码使用"Convert.ToDouble",我不想改变所有代码,另一方面我想知道为什么会发生这种情况.

提前致谢.

dka*_*itz 14

您可以使用以下命令设置线程的区域性:

Thread.CurrentThread.CurrentCulture = 
       System.Globalization.CultureInfo.InvariantCulture;
Run Code Online (Sandbox Code Playgroud)