【发布时间】:2019-09-04 20:18:33
【问题描述】:
我正在开发一个使用数字精度的软件,但我遇到了这个问题,当我将一个字符串转换为 double 时,它会输出不同的文化。
例如我用
Convert.ToDouble("4089.90"); // it outputs 40.899,00
很奇怪,因为在我的计算机上它工作正常,但在客户端的 PC 上(在区域设置中具有相同的文化)显示后一个输出。我知道我可以使用
修复它Convert.ToDouble("4089.90", System.Globalization.CultureInfo.InvariantCulture);
但是程序中有很多使用“Convert.ToDouble”的代码,我不想全部更改,另一方面我想了解为什么会发生这种情况。
【问题讨论】:
-
两台电脑使用什么操作系统等?
-
我的是 Windows Vista,客户端机器是 XP。
-
这是所有其他答案的副本,所以我不会作为我自己的答案发布。但是,如果将
InvariantCulture提供给Convert方法可以解决问题,那么这显然是一个涉及文化的问题。您应该将日志记录添加到输出文化信息的程序中,并要求报告问题的用户提供该日志。然后你可以回过头来对他们说,“这是因为你的电脑上有这些设置:blah blah”。 -
@jdmichal 如果两个程序需要不同的设置才能正常运行?最好只是正确地编写程序,而不是强迫用户更改他们的计算机以适应程序。
-
我没有说,“所以你需要把它改成这个!”我只是说,它会揭示问题,以便您可以告诉他们它是什么。您自己阅读其余部分。它实际上会如何进行,然后您将向他们提供修复您的程序的成本估算。然后他们会自行更改,而无需您询问! (是的,我在开玩笑。)