Как отформатировать число как строку валюты в Java

Введение Валюта - очень важная часть нашего современного мира. Поэтому для нас не менее важно уметь правильно выразить это на Java. В этом руководстве мы рассмотрим, как форматировать числа как строки валюты в Java. Форматирование числа как денежной строки Вот как вы можете легко отформатировать число, например двойное, в денежную строку: double currencyAmount = 1500.00; // Создаем новый языковой стандарт Locale usa = new Locale ("en", "US"); // Создаем экземпляр Currency для куклы Locale Currency

Вступление

Валюта - очень важная часть нашего современного мира. Поэтому для нас не менее важно уметь правильно выразить это на Java.

В этом руководстве мы рассмотрим, как форматировать числа как строки валюты в Java .

Форматировать число как денежную строку

Вот как можно легко отформатировать число, например double в строку валюты:

 double currencyAmount = 1500.00; 
 // Create a new Locale 
 Locale usa = new Locale("en", "US"); 
 // Create a Currency instance for the Locale 
 Currency dollars = Currency.getInstance(usa); 
 // Create a formatter given the Locale 
 NumberFormat dollarFormat = NumberFormat.getCurrencyInstance(usa); 
 
 // Format the Number into a Currency String 
 System.out.println(dollars.getDisplayName() + ": " + dollarFormat.format(currencyAmount)); 

Если мы запустим этот код, это приведет к:

 US Dollar: $1,500.00 

Для форматирования чисел в разных валютах используется несколько классов Java. В нашем примере использовались классы Locale и Currency из пакета java.util Кроме того, мы использовали NumberFormat , который можно найти в пакете java.text

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

Класс Locale

Каждый Locale выражает геополитический регион и включает такую информацию, как язык и местоположение. У стран есть уникальные способы выражения валюты. Вместо того, чтобы вручную форматировать каждую валюту по-разному, использование Locale позволяет автоматизировать этот процесс.

Чтобы создать новый Locale , мы можем использовать один из трех доступных конструкторов:

 Locale(String language); 
 Locale(String language, String country); 
 Locale(String language, String country, String variant); 

Однако обратите внимание, что String для конструкторов не могут быть произвольными. Вы можете найти полный список всех поддерживаемых языков в Java 8 здесь .

Теперь давайте создадим несколько примеров объектов Locale Мы будем ссылаться на них позже, когда будем создавать фактический метод печати валюты:

 Locale usa = new Locale("en", "US"); 
 Locale germany = new Locale("de", "DE"); 
 Locale japan = new Locale("jp", "JP"); 

Поскольку мы работаем с валютой, первый String , language, будет определять форматирование значения валюты (например, 1 000 000,00 или 1 000 000,00). Второй String , region, определяет, какой знак валюты используется (например, $ или Â ¥).

Валютный класс

Второй класс, который нам нужно понять, - это класс Currency Каждый Currency представляет мировую валюту. Мы хотим получить валюту с учетом нашего Locale , поэтому мы будем использовать следующий метод:

 Currency.getInstance(Locale locale); 

Это вернет соответствующий Currency для указанного параметра Locale Итак, используя Locale , мы сделаем следующее:

 Currency dollars = Currency.getInstance(usa); 
 Currency euros = Currency.getInstance(germany); 
 Currency yen = Currency.getInstance(japan); 

Теперь, когда мы создали три Currency , мы можем перейти к следующему классу.

Класс NumberFormat

В NumberFormat есть методы для форматирования чисел на основе языковых стандартов. В странах есть разные способы группировки номеров. Например, тысяча может быть представлена как «1000», «1000», «1 000» и другие варианты.

Мы будем использовать метод NumberFormat.getCurrencyInstance(Locale l) . Этот метод возвращает NumberFormat , соответствующий указанному параметру Locale Вот как мы будем использовать его в нашем методе:

 NumberFormat dollarFormat = NumberFormat.getCurrencyInstance(usa); 
 NumberFormat eurosFormat = NumberFormat.getCurrencyInstance(germany); 
 NumberFormat yenFormat = NumberFormat.getCurrencyInstance(japan); 

Создание метода печати числа как валюты

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

Мы также примем String, указав, в какой валюте мы хотели бы распечатать ее как:

 public static void printCurrency(double currencyAmount, String outputCurrency) { 
 Locale locale; 
 
 if (outputCurrency.equals("Yen")) { 
 locale = new Locale("jp", "JP"); 
 } else if(outputCurrency.equals("Euros")) { 
 locale = new Locale("de", "DE"); 
 } else if (outputCurrency.equals("Dollars")) { 
 locale = new Locale("en", "US"); 
 } else { 
 locale = new Locale("en", "US"); 
 } 
 
 Currency currency = Currency.getInstance(locale); 
 NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale); 
 
 System.out.println(currency.getDisplayName() + ": " + numberFormat.format(currencyAmount)); 
 
 } 
 } 

Давайте протестируем этот метод, вызвав его и передав соответствующие аргументы:

 printCurrency(1000000.00, "Yen"); 
 printCurrency(1000000.00, "Dollars"); 
 printCurrency(1000000.00, "Euros"); 

Это приводит к:

 Japanese Yen: JPY 1,000,000 
 US Dollar: $1,000,000.00 
 Euro: 1.000.000,00 € 

В этом примере мы использовали double формат и напечатали его как валюту с правильным форматированием. Подойдут и другие числовые типы, но мы советуем использовать double для значений валюты.

Заключение

В этой статье мы немного узнали о классах Locale , Currency и NumberFormat Затем мы применили эти знания в методе, который позволил нам правильно отформатировать и напечатать double валюту.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus