Добавление знака в валюту - PullRequest
0 голосов
/ 10 ноября 2019

Я использую Java NumberFormat для отображения валют и хочу добавить валюты знаки , например, для: гонконгский доллар: HK $ канадский доллар: CA $ сингапурский доллар:S $ ...

НЕ $, £, € и т. Д.

Есть ли способ, которым NumberFormat может добавить их автоматически? или, может быть, вы можете порекомендовать другое решение?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2019

Я нашел следующую библиотеку: API Java Money and Currency . это реализация JSR 354: Java api для денег и валюты.

Это код, который я обнаружил, который дает что-то близкое к требуемым требованиям (пример для австралийского доллара: 1 доллар США):

    MonetaryAmount oneAuDDollar = Monetary.getDefaultAmountFactory()
        .setCurrency("AUD").setNumber(1).create();

    MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(
        AmountFormatQueryBuilder.of(Locale.US)
            .set(CurrencyStyle.SYMBOL)
            .set("pattern", "¤ #,##0.00###")
            .build());

    String formatted = format.format(oneAuDDollar);

    System.out.println(formatted);

вывод: A$ 1.00

0 голосов
/ 10 ноября 2019

Посмотрите на этот веб-сайт (Первый поиск в Google)

//JDK 11

NumberFormat nF = NumberFormat.getNumberInstance(); 

System.out.println("Initially Currency: " + nF.getCurrency().getSymbol()); 

nF.setCurrency(Currency.getInstance(Locale.CANADA));

System.out.println("Currency set as: " + nF.getCurrency().getSymbol()); 

напечатает:

Initially Currency: $
Currency set as: CA$

Для JDK 8 вам нужно getSymbol () с локалью

//JDK 8

nF.setCurrency(Currency.getInstance(Locale.JAPAN));

System.out.println("Currency set as: " + nF.getCurrency().getSymbol(Locale.JAPAN));

также покажет знак

Currency set as: ¥
...