1

我不确定是否有其他问题提出相同的问题。到目前为止,我还没有在stackoverflow中看到这个问题,因此发布相同。如何在格式化数字时确定货币符号的放置位置?

我有一个要求,我需要根据货币格式化数字。

enter image description here

让我解释一下上面的表格给你我的问题更多的上下文。对于美国,数字格式为USD976,543.21,这里的货币符号是美元,它放在数字前面的前面。这与fr-FR区域设置稍有不同,这里符号位于数字之后。

我所有的格式都发生在前端而不是后端。我正在给FE格式的#格式,然后我们自己生成的代码格式化该格式的数字。例如,对于美国,我提供USD ###,###,###。####。在这里,我需要让前端知道下面的信息,以便前端以及时的方式格式化。 我的问题是: 有没有什么办法让在后台以下信息:

  1. 放在什么地方货币,启动次数或争取结束?
  2. 数字和符号之间是否有空格?看看976,543.21美元和976 543,21欧元。货币符号与欧元数量之间有空格,但不是美元。

我正在使用java.util.Currency。

回答

0

您可以使用Globalizejs您的需求

一个JavaScript库的国际化和本地化,充分利用官方的Unicode CLDR JSON数据

这是很容易下手,你不必担心将货币代码放在前面或末尾,图书馆将根据区域设置和currencyCode进行处理。

实施例:

var formatter; 

Globalize.locale("en"); 
formatter = Globalize.currencyFormatter("USD"); 

formatter(9.99); 
// > "$9.99" 
在不同的区域设置

var deFormatter = Globalize("de").currencyFormatter("EUR"); 
deFormatter(9.99); 
// > "9,99 €" 

enter image description here

+0

我认为问题是Java的JavaScript不... – Adam

+0

是的,我读了,但此行'我的所有格式在前端发生,而不是backend.'吸引我的目光。因此给了他一个简单而又充分发展的解决方案。 :) –

+0

谢谢@NeerajJain您的意见。我有一个本国代码来进行数字格式化。我所缺少的是我在问题中提出的两个问题。如何确定货币符号的位置,首先还是最后?货币代码和符号之间是否有空格? – nimi

0

的NumberFormat.getCurrencyInstance()可用于根据特定的区域设置的货币来格式化的数在后端。格式化的货币可以传递给FE进行渲染。例如:

double num = 976_543.21; 

    NumberFormat defaultFormat = NumberFormat.getCurrencyInstance(new Locale("fr","FR")); 
    System.out.println(defaultFormat.format(num)); //output 976 543,21 € 

    Locale us = new Locale("en", "US"); 
    NumberFormat usFormat = NumberFormat.getCurrencyInstance(us); 
    System.out.println(usFormat.format(num)); //output $976,543.21 
+0

我没有在BE中进行数字格式化,因为我需要在前端进行格式设置。为了做到这一点,我需要更多的东西,1.在哪里放置货币,数字的开始或结束,我如何确定这一点。 2.数字和符号之间是否有空格。 – nimi