【发布时间】:2012-01-18 11:24:24
【问题描述】:
我正在编写一些代码来将字符串解析为双精度,但是这个字符串是从另一台机器传递给我的。自然会出现文化不同的问题。所以,虽然机器 A 可能会发送给我:
"0.5"
机器 B 可能会发给我
"0,6"
因为它在德国并且有不同的文化。
正确解析这两个输入的最佳方法是什么?有人建议使用 CultureInfo.InvariantCulture 作为 Convert.ToDouble 的参数,但这不会只在 我 生成上述字符串的情况下有所帮助,而不是在其他人可以向我发送不同的字符串时?
我是否认为在尝试转换之前我需要了解源文化并更改 Thread.CurrentThread.CurrentCulture 以匹配?
【问题讨论】:
-
这不是因为它在德国,而是因为程序员对这个问题一无所知 - 遗憾的是太常见了。所有外部沟通都应该在不变的文化中。当您执行 String.Format 时,FxCop 甚至会在 .NET 中发出警告。
-
谢谢,有道理。我现在更好地理解了不变文化的使用。