Java - NumberValue в строку без знака валюты - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь отформатировать NumberValue в виде строки в текущем формате локали.

Например, для Locale.Germany это будут результаты, которые я пытаюсь получить:

1   -> 1,00
1.1 -> 1,10
0.1 -> 0,10

Что я пробовал:

String test1 = NumberFormat.getInstance().format(1.1);
// -> 1,1
String test2 = NumberFormat.getCurrencyInstance().format(1.1);
// -> 1,10 €

Как получить такой же формат, как во втором примере, без символа валюты?Или, альтернативно, как я могу убедиться, что результат первого примера всегда имеет количество десятичных дробей, необходимое для текущей локали?

Редактировать: Поскольку в некоторых валютах есть 0,2 или 3 десятичных знака, я не наденуНе думаю, что установка десятичных знаков на фиксированную сумму будет иметь правильные результаты.

Кроме того, некоторые валюты имеют свои символы спереди, а некоторые сзади, поэтому отсечение последних символов, вероятно, также не будет работать.

http://apps.cybersource.com/library/documentation/sbc/quickref/currencies.pdf

1 Ответ

0 голосов
/ 30 января 2019

java.util.Currency предоставляет необходимую информацию.Разумный подход к печати значений валют без знака валюты в чистом Java-коде состоит в том, чтобы получить экземпляр общего назначения NumberFormat и настроить его на использование количества цифр, определенного соответствующим объектом Currency:

NumberFormat numberFormat = NumberFormat.getInstance(myLocale);
Currency currency = Currency.getInstance(myLocale);
numberFormat.setMinimumFractionDigits(currency.getDefaultFractionDigits());

Если вам нужна определенная валюта, а не валюта по умолчанию для используемой вами локали, вместо нее используйте String переопределение Currency.getInstance() и укажите соответствующий код валюты.

...