最佳实践 - 多种货币格式化

17
以下是最佳实践方案:
我们有一个应用程序,希望支持多种货币。该软件将尊重用户的语言环境和区域设置来确定正确的数字格式,例如$10,000.00或10.000,00₴等。
然而,我们希望能够根据货币ID(可能是三个字母的ISO4217代码)格式化不同的数字。我们的想法是在数据库中存储每种货币的表格,然后请求用户选择要使用的货币符号。程序将根据语言环境/区域设置格式化所有数字,但将使用程序中定义的货币符号。
因此,对于以下值和货币:
10000澳元
5989.34美元
450欧元

程序将输出:
$ 10,000.00
$ 5,989.34
€ 450.00

或者使用格式为#####,## $的区域设置,结果将是:
10000.00$
5989.34$
450.00€

尊重语言环境/区域设置的数字格式,但显示不同的货币,这种情况下的最佳实践是什么?
希望这样清楚明了。
技术使用的是c# .NET 2.0。

你应该参考你之前的问题,我认为它们很相似:https://dev59.com/H0fRa4cB1Zd3GeqP8FR4 - Elijah
5个回答

7

我知道这是一个旧答案,但你应该在这里引用这些链接的相关部分。 - Nathan Arthur

3

听起来你已经掌握了格式化数据的最佳实践。如果我是你,我会更关注用户习惯而不是技术标准。

如果你在用户对不同货币相当熟悉的市场运营,那么需要以不同的方式设计界面。否则,显示货币符号可能会让一些用户感到困惑,因为仅凭符号本身无法确定所示金额的货币种类。

此外,如果你的需求是将任何货币显示给任何地区,则ISO4217标准是最佳选择。这是世界各地货币兑换商店、货币兑换、发票等所显示的内容。另外,我还会参考以下SO问题。虽然它们并非直接与你的问题相关,但是它们涉及支持多种货币的问题的元讨论非常好。


1

与其仅存储货币符号,不如为每个货币代码存储区域设置字符串,例如 AUD --> en-AU。

CultureInfo ci = new CultureInfo("en-AU");
currencyValue.ToString( "c", ci );

我不确定可用的格式化选项有多灵活。

不确定这是否有帮助:

为特定文化格式化数字数据


这不是适用于多个地区使用的货币(如欧元)的可行解决方案。欧元区内的不同国家有不同的数字格式。 - Tormod Fjeldskår
我同意。数字格式必须遵守计算机当前的文化,而货币符号代表任何货币。所提出的解决方案不可行。 - Klondike

0
我曾经遇到过类似的情况。我找到了一种方法,不知道对你有多大帮助,但它解决了我的问题。我为每个地方设置了一个会话字符串,例如Session["cur"]="0.000"或"0.00"用于每个登录验证。在系统中任何涉及货币的地方,我都使用.ToString[Session["cur"].ToString()]将其应用于模型变量。这对我很有效。希望对你也有所帮助。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接