如何在Java中找出货币子单元(又称次要单元)符号?

ale*_*ins 19 java currency

Currency.getSymbol将给我一个主要符号(例如美元的"$"),但我想得到次要单位(例如英镑的"p"或美元的美分符号),而不写我自己的查找表.

是否有标准,即内置方式来做到这一点?

Zaw*_* oo -1

我想建议针对这种情况使用 custom custom currency format。使用DecimalFormator NumberFormatofjava.text.*包。\n有很多这样的例子。

\n\n

例子

\n\n
public class CurrencyFormatExample {\n    public void currencyFormat(Locale currentLocale) {\n        Double currency = new Double(9843.21);\n        NumberFormat currencyFormatter;\n        String currencyOut;\n        currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale);\n        currencyOut = currencyFormatter.format(currency);\n        System.out.println(currencyOut + " " + currentLocale.toString());\n    }\n\n    public static void main(String args[]) {\n        Locale[] locales = new Locale[]{new Locale("fr", "FR"),\n            new Locale("de", "DE"), new Locale("ca", "CA"),\n            new Locale("rs", "RS"),new Locale("en", "IN")\n        };\n        CurrencyFormatExample[] formate = new CurrencyFormatExample[locales.length];\n        for (int i = 0; i < locales.length; i++) {\n            formate[i].currencyFormat(locales[i]);\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
9\xc3\x82 843,21 \xc3\xa2?\xc2\xac fr_FR\n\n9.843,21 \xc3\xa2?\xc2\xac de_DE\n\nCAD 9.843,21 ca_CA\n\nRSD 9,843.21 rs_RS\n\nRs.9,843.21 en_IN\n
Run Code Online (Sandbox Code Playgroud)\n\n

参考这里

\n\n

小货币更新

\n\n
  Locale locale = Locale.UK;\n  Currency curr = Currency.getInstance(locale);\n\n  // get and print the symbol of the currency\n  String symbol = curr.getSymbol(locale);\n  System.out.println("Symbol is = " + symbol);\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出 :

\n\n
Symbol is = \xc2\xa3\n
Run Code Online (Sandbox Code Playgroud)\n

  • 抱歉,但我认为提交者要求提供子单位的符号或代码(例如美元的“¢”或英镑的“p”)。有关详细信息,请参阅答案http://stackoverflow.com/questions/5023754/do-minor-currency-units-have-a-iso-standard。根据该答案,这些没有国际标准。 (2认同)