Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Форматирование
Раздел: Числа и Валюты
Используя Предопределенные Форматы
Домашняя страница > Интернационализация > Форматирование

Используя Предопределенные Форматы

Вызывая методы, обеспеченные NumberFormat class, можно отформатировать числа, валюты, и проценты согласно Locale. Материал, который следует, демонстрирует, как форматировать методы с вызванным примером программы NumberFormatDemo.java.

Числа

Можно использовать NumberFormat методы, чтобы отформатировать числа типа примитива, такой как double, и их соответствующие объекты обертки, такой как Double.

Следующие форматы a примера кода Double согласно Locale. Вызов getNumberInstance метод возвращает специфичный для локали экземпляр NumberFormat. format метод принимает Double как параметр и возвраты отформатированное число в a 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 class. NumericShaper API позволяет Вам вывести на экран числовое значение, представленное внутренне как значение ASCII в любой форме цифры Unicode. См. Преобразовывающие латинские Цифры к Другим Цифрам Unicode для получения дополнительной информации.

Кроме того, у некоторых локалей есть различные коды, которые определяют, что цифра Unicode формирует использоваться вместо арабских цифр, таких как локаль для тайского языка. См. Код Разновидности раздела в Создании Локали для получения дополнительной информации.

Валюты

Если Вы запишете бизнес-приложения, то Вы должны будете, вероятно, отформатировать и вывести на экран валюты. Вы форматируете валюты тем же самым способом как числа, за исключением того, что Вы вызываете getCurrencyInstance создать средство форматирования. Когда Вы вызываете format метод, это возвращает a 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 class не сознает обменные курсы. Методы, принадлежащие NumberFormat Валюты формата class, но не преобразовывают их.

Отметьте что Currency class разрабатывается так, чтобы никогда не было чем один Currency экземпляр для любой данной валюты. Поэтому, нет никакого общедоступного конструктора. Как демонстрирующийся в предыдущем примере кода, Вы получаете a Currency экземпляр используя getInstance методы.

Выборка InternationalizedMortgageCalculator.java также демонстрирует, как использовать Currency class. (Отметьте, что эта выборка не преобразовывает значения валюты.) Следующее использование локаль en-US:

Ипотечный калькулятор, локаль en-US

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

Ипотечный калькулятор, en-британская локаль

Выборка InternationalizedMortgageCalculator.java требует следующих файлов ресурсов:

Currency class содержит другие методы, чтобы получить соответствующую информацию валюты:

Расширяемая Поддержка Кодов Валюты ISO 4217

ISO 4217 является стандартом, опубликованным Международной организацией по стандартизации. Это определяет трехбуквенные коды (и эквивалентные трехразрядные числовые коды), чтобы представить валюты и фонды. Этот стандарт выпускается внешним агентством и выпускается независимый от Java платформа SE.

Предположите, что страна принимает различную валюту, и агентство по обслуживанию ISO 4217 выпускает обновление валюты. Чтобы реализовать это обновление и таким образом суперуступить валюту значения по умолчанию во времени выполнения, создайте названный файл свойств <JAVA_HOME>/lib/currency.properties. Этот файл содержит пары ключ/значение кода страны ISO 3166, и данные валюты ISO 4217. Часть значения состоит из трех разделенных от запятой значений валюты ISO 4217: алфавитный код, числовой код, и незначительный модуль. Любые строки, начинающиеся с символа хеша (#), обрабатываются как строки комментария. Например:

# Sample currency property for Canada
CA=CAD,124,2

CAD стенды за канадский доллар; 124 числовой код за канадский доллар; и 2 незначительный модуль, который является числом десятичных разрядов, которых валюта требует, чтобы представить дробные валюты. Например, следующий файл свойств суперуступит канадскую валюту значения по умолчанию канадскому доллару, у которого нет никаких модулей меньшими чем доллар:

CA=CAD,124,0

Проценты

Можно также использовать методы NumberFormat class, чтобы отформатировать проценты. Чтобы получить специфичное для локали средство форматирования, вызовите getPercentInstance метод. С этим средством форматирования десятичная дробь такой как 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

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Числа и Валюты
Следующая страница: Настройка Форматов