【发布时间】:2017-09-28 06:45:06
【问题描述】:
当我将toString() 应用于双精度类型的数字时,我得到了以. 作为小数分隔符的字符串。仅在我的一个项目中,我得到, 作为小数点分隔符。
我没有更改 CultureInfo 数据。在我的所有项目中,我的 CurrentCulture 都是 el-GR,这是默认的系统文化。 el-GR 使用 , 作为小数点分隔符,但我已通过 Windows 区域设置将此值更改为 .,这已正确反映到我的所有项目中,但有问题的项目除外。
我能说的唯一区别是它是一个网站,而不是一个普通的 Visual Studio 项目。我不知道这是否会强制 Visual Studio 不考虑本地计算机 NumberFormat 异常以及是否/如何更改。
【问题讨论】:
-
我无法告诉您为什么会在这种特殊情况下发生这种情况,但您始终可以将特定 CultureInfo 作为参数传递给
ToString和大多数Parse方法,以确保您始终使用相同的文化。您还可以检查CultureInfo.CurrentCulture和CultureInfo.CurrentUICulture是否相同(例如,通过在特殊页面上显示两者)。 -
我会随机猜测行为不端的项目针对的是旧的 .NET 版本。
-
@ManfredRadlwimmer 我宁愿避免将 CultureInfo 指定为参数。我已经进行了您建议的测试,并且 CurrentCulture 与 CurrentUICulture 不同。但我所有其他项目也是如此。你知道框架默认使用哪两个?
-
@HansPassant 它针对版本 4.5.2
-
您的程序使用的 CultureInfo(如果您没有在代码中以某种方式明确设置)与 当前用户 的区域设置有关。运行 Web 项目时,当前用户很可能不是您,即登录计算机的用户,而是 IIS 使用的内置用户。查看this question 并以某种方式显示当前用户