1

我们有一个 Winform 应用程序,它从数据库中获取一些数值。当 Windows 的用户版本是英语时,这可以正常工作。所以数字格式都是完美的。但是,当在 Windows 7 中以葡萄牙语作为基本语言(葡萄牙语-巴西)打开相同的应用程序时,数字的格式都错误。这是因为美国英语和葡萄牙语的数字格式完全不同。

似乎最近在 .NET Framework 4.0 中发生了这种变化,因为该应用程序在使用 2.0 Framework 构建时运行良好。

例如,数字“THOUSAND”将显示为 1.000,00,这在运行葡萄牙语版本的 windows 的系统中被解释为 ONE。

英语:1,000.00 = 千

葡萄牙语:1.000,00 = 千

有人可以向我指出有关如何解决此问题的任何资源,或者强制应用程序使用数据库值而不是将它们格式化为本地用户系统的正确方法是什么?用户可以接受以美国格式显示的数字。

4

2 回答 2

2
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");

这将重置文化,在表单/程序的开头使用它

或者

Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

你可以两个都试试,因为我不确定哪一个能用

于 2013-06-01T11:48:34.013 回答
1

显示数字的格式(分隔符和空格)取决于它们的字符串表示形式。小数存储在没有分隔符的数据库或内存中(显然),它们只是硬盘上的 128 位(粗略地说)。当您尝试显示它们时,格式就会出现。如果您的号码以正确的数字格式存储在数据库中,那么这应该不是问题。

如果您尝试将字符串转换为数字,则可能会出现问题。例如,如果您将 db 中的值存储为字符串(我希望您不要这样做)。在这种情况下,您应该在每次将数字转换为字符串时指定格式提供程序,反之亦然。例如:

decimal.Parse(numberAsString, CultureInfo.InvariantCulture); // 1
decimalNumber.ToString(CultureInfo.InvariantCulture); // 2

参考 1 参考 2

于 2013-06-01T11:52:23.463 回答