Spec-Zone .ru
спецификации, руководства, описания, API
|
Вызывая методы, обеспеченные NumberFormat
class, можно отформатировать числа, валюты, и проценты согласно Locale
NumberFormatDemo.java
.
Можно использовать NumberFormat
методы, чтобы отформатировать числа типа примитива, такой как double
, и их соответствующие объекты обертки, такой как Double
Следующие форматы a примера кода Double
Locale
getNumberInstance
NumberFormat
format
Double
String
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()); }
Этот пример печатает следующий; это показывает, как формат того же самого числа меняется Locale
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 предпочитаются, используйте java.awt.font.NumericShaper
NumericShaper
API позволяет Вам вывести на экран числовое значение, представленное внутренне как значение ASCII в любой форме цифры Unicode. См.
Кроме того, у некоторых локалей есть различные коды, которые определяют, что цифра Unicode формирует использоваться вместо арабских цифр, таких как локаль для тайского языка. См. Код Разновидности раздела в Создании Локали для получения дополнительной информации.
Если Вы запишете бизнес-приложения, то Вы должны будете, вероятно, отформатировать и вывести на экран валюты. Вы форматируете валюты тем же самым способом как числа, за исключением того, что Вы вызываете getCurrencyInstance
создать средство форматирования. Когда Вы вызываете format
String
Этот пример кода показывает, как отформатировать валюту специфичным для локали способом:
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$. Однако, примите во внимание что NumberFormat
NumberFormat
Отметьте что Currency
Currency
Currency
getInstance
Выборка InternationalizedMortgageCalculator.java
также демонстрирует, как использовать Currency
Следующее использование en-британская локаль:
Выборка InternationalizedMortgageCalculator.java
требует следующих файлов ресурсов:
Currency
class содержит другие методы, чтобы получить соответствующую информацию валюты:
getAvailableCurrencies
getCurrencyCode
Currency
getSymbol
Currency
Locale
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
Эта выборка демонстрирует, что символ валюты может измениться в зависимости от локали.
getDisplayName
Currency
getSymbol
Locale
Предположите, что страна принимает различную валюту, и агентство по обслуживанию ISO 4217 выпускает обновление валюты. Чтобы реализовать это обновление и таким образом суперуступить валюту значения по умолчанию во времени выполнения, создайте названный файл свойств <JAVA_HOME>/lib/currency.properties
. Этот файл содержит пары ключ/значение кода страны #
), обрабатываются как строки комментария. Например:
# Sample currency property for Canada CA=CAD,124,2
CAD
стенды за канадский доллар; 124
числовой код за канадский доллар; и 2
незначительный модуль, который является числом десятичных разрядов, которых валюта требует, чтобы представить дробные валюты. Например, следующий файл свойств суперуступит канадскую валюту значения по умолчанию канадскому доллару, у которого нет никаких модулей меньшими чем доллар:
CA=CAD,124,0
Можно также использовать методы NumberFormat
getPercentInstance
Следующий пример кода показывает, как отформатировать процент.
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