|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Вызывая методы, обеспеченные NumberFormat class, можно отформатировать числа, валюты, и проценты согласно . Материал, который следует, демонстрирует, как форматировать методы с вызванным примером программы
Можно использовать NumberFormat методы, чтобы отформатировать числа типа примитива, такой как double, и их соответствующие объекты обертки, такой как .
Следующие форматы a примера кода согласно . Вызов метод возвращает специфичный для локали экземпляр . метод принимает как параметр и возвраты отформатированное число в a .
static public void displayNumber(Locale currentLocale) {
Integer quantity = new Integer(123456);
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String quantityOut;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
quantityOut = numberFormatter.format(quantity);
amountOut = numberFormatter.format(amount);
System.out.println(quantityOut + " " + currentLocale.toString());
System.out.println(amountOut + " " + currentLocale.toString());
}
Этот пример печатает следующий; это показывает, как формат того же самого числа меняется :
123 456 fr_FR 345 987,246 fr_FR 123.456 de_DE 345.987,246 de_DE 123,456 en_US 345,987.246 en_US
По умолчанию, когда текст содержит числовые значения, те значения выводятся на экран, используя арабские цифры. Когда другие формы цифры Unicode предпочитаются, используйте class. NumericShaper API позволяет Вам вывести на экран числовое значение, представленное внутренне как значение ASCII в любой форме цифры Unicode. См.
Кроме того, у некоторых локалей есть различные коды, которые определяют, что цифра Unicode формирует использоваться вместо арабских цифр, таких как локаль для тайского языка. См. Код Разновидности раздела в Создании Локали для получения дополнительной информации.
Если Вы запишете бизнес-приложения, то Вы должны будете, вероятно, отформатировать и вывести на экран валюты. Вы форматируете валюты тем же самым способом как числа, за исключением того, что Вы вызываете getCurrencyInstance создать средство форматирования. Когда Вы вызываете метод, это возвращает a это включает отформатированное число и соответствующий знак валюты.
Этот пример кода показывает, как отформатировать валюту специфичным для локали способом:
static public void displayCurrency( Locale currentLocale) {
Double currencyAmount = new Double(9876543.21);
Currency currentCurrency = Currency.getInstance(currentLocale);
NumberFormat currencyFormatter =
NumberFormat.getCurrencyInstance(currentLocale);
System.out.println(
currentLocale.getDisplayName() + ", " +
currentCurrency.getDisplayName() + ": " +
currencyFormatter.format(currencyAmount));
}
Вывод, сгенерированный предыдущими строками кода, следующие:
French (France), Euro: 9 876 543,21 € German (Germany), Euro: 9.876.543,21 € English (United States), US Dollar: $9,876,543.21
На первый взгляд этот вывод может выглядеть неправильным Вам, потому что числовые значения являются всеми одинаковыми. Конечно, 9 876 543 21€ не эквивалентно 9 876 543,21$. Однако, примите во внимание что class не сознает обменные курсы. Методы, принадлежащие Валюты формата class, но не преобразовывают их.
Отметьте что class разрабатывается так, чтобы никогда не было чем один экземпляр для любой данной валюты. Поэтому, нет никакого общедоступного конструктора. Как демонстрирующийся в предыдущем примере кода, Вы получаете a экземпляр используя методы.
Выборка class. (Отметьте, что эта выборка не преобразовывает значения валюты.) Следующее использование локаль en-US:

Следующее использование en-британская локаль:

Выборка
Currency class содержит другие методы, чтобы получить соответствующую информацию валюты:
: Возвраты все доступные валюты в JDK
: Возвращает ISO 4217 числовой код для a экземпляр
: Возвращает символ для a экземпляр. Можно дополнительно определить как параметр a объект. Рассмотрите следующую выборку:
Locale enGBLocale =
new Locale.Builder().setLanguage("en").setRegion("GB").build();
Locale enUSLocale =
new Locale.Builder().setLanguage("en").setRegion("US").build();
Currency currencyInstance = Currency.getInstance(enUSLocale);
System.out.println(
"Symbol for US Dollar, en-US locale: " +
currencyInstance.getSymbol(enUSLocale));
System.out.println(
"Symbol for US Dollar, en-UK locale: " +
currencyInstance.getSymbol(enGBLocale));
Выборка печатает следующее:
Symbol for US Dollar, en-US locale: $ Symbol for US Dollar, en-UK locale: USD
Эта выборка демонстрирует, что символ валюты может измениться в зависимости от локали.
: Возвращает имя дисплея для a экземпляр. Как метод, можно дополнительно определить a объект.
является стандартом, опубликованным Международной организацией по стандартизации. Это определяет трехбуквенные коды (и эквивалентные трехразрядные числовые коды), чтобы представить валюты и фонды. Этот стандарт выпускается внешним агентством и выпускается независимый от Java платформа SE.
Предположите, что страна принимает различную валюту, и агентство по обслуживанию ISO 4217 выпускает обновление валюты. Чтобы реализовать это обновление и таким образом суперуступить валюту значения по умолчанию во времени выполнения, создайте названный файл свойств <JAVA_HOME>/lib/currency.properties. Этот файл содержит пары ключ/значение кода страны , и данные валюты ISO 4217. Часть значения состоит из трех разделенных от запятой значений валюты ISO 4217: алфавитный код, числовой код, и незначительный модуль. Любые строки, начинающиеся с символа хеша (#), обрабатываются как строки комментария. Например:
# Sample currency property for Canada CA=CAD,124,2
CAD стенды за канадский доллар; 124 числовой код за канадский доллар; и 2 незначительный модуль, который является числом десятичных разрядов, которых валюта требует, чтобы представить дробные валюты. Например, следующий файл свойств суперуступит канадскую валюту значения по умолчанию канадскому доллару, у которого нет никаких модулей меньшими чем доллар:
CA=CAD,124,0
Можно также использовать методы class, чтобы отформатировать проценты. Чтобы получить специфичное для локали средство форматирования, вызовите метод. С этим средством форматирования десятичная дробь такой как 0.75 выводится на экран как 75 %.
Следующий пример кода показывает, как отформатировать процент.
static public void displayPercent(Locale currentLocale) {
Double percent = new Double(0.75);
NumberFormat percentFormatter;
String percentOut;
percentFormatter = NumberFormat.getPercentInstance(currentLocale);
percentOut = percentFormatter.format(percent);
System.out.println(percentOut + " " + currentLocale.toString());
}
Эта выборка печатает следующее:
75 % fr_FR 75% de_DE 75% en_US