Форматирование вывода

Число х можно вывести на консоль с помощью оператора System,out.println(x). Эта команда напечатает число х с максимальным количеством ненулевых цифр, допустимым для данного типа чисел. Например, код

х = 10000.0 / 3.0; System.out.print(x);

выведет на экран число 3333.3333333333335. Это создает проблемы, если вы хотите, например, вывести на экран количество долларов и центов.

Чтобы сделать вывод более аккуратным, можно управлять его форматом.

Класс NumberFormat в пакете java.text имеет три метода, предоставляющих стандартные средства форматирования для

• чисел;

• денежных сумм;

• процентов.

Допустим, что по умолчанию вы пользуетесь американским национальным стандартом. (Национальный стандарт (local) — это множество спецификаций строк и чисел, характерных для данной страны, например, порядок следования чисел в датах, символ денежной единицы и т.д. Национальный стандарт — важное понятие при создании интернационализированных приложений— программ, доступных пользователям во всем мире.) Теперь значение 10000.0/3.0с помощью этих трех форматов будет напечатано в следующем виде:

3,333.333

$3,333.33

333,333%

Как видим, средства форматирования добавляют запятые для разделения тысяч, символ денежной единицы ($) и знак процента. Чтобы получить средства форматирования для национального стандарта по умолчанию, используется один из трех методов.

NumberFormat.getNumberlnstance()

NumberFormat.getCurrencylnstance()

NumberFormat.getPercentlnstance()

Каждый из этих методов возвращает объект, имеющий тип NumberFormat. Этот объект можно использовать для форматирования одного или нескольких чисел. Затем, чтобы получить строку, содержащую отформатированное число, к объекту типа NumberFormat нужно применить метод format. Получив отформатированную строку, возможно, вы просто выведете ее на экран.

double х - 10000.0/3.0; NumberFormat formatter = NumberFormat.getNumberlnstance(); String s = formatter.format(x); // Строка "3,333.33". System.out.println(s);

Если вы захотите задать минимальное и максимальное количество цифр в целой или дробной части числа, можете воспользоваться методами setMinimumlntegerDigits, setMinimumFractionDigits, setMaximumlntegerDigits и setMaximumlntegerDigits из класса Number Format.

double x = 10000.0/3.0; NumberFormat formatter = NumberFormat.getNumberlnstance(); formatter.setMaximumFraction(4); formatter.setMinimumlntegerDigits(6); S t r i n g s = formatter.format(x); // Строка "003,333.3333".

Установка максимального количества цифр в дробной части нередко оказывается полезной. Последняя отображаемая цифра увеличивается на единицу, если отброшенная цифра равна или больше 5. Если нужно отобразить замыкающие нули, то минимальное количество цифр в дробной части должно быть равным их максимальному количеству. В противном случае следует оставить минимальное количество цифр в дробной части равным его значению по умолчанию, т.е. 0. Установка количества цифр в целой части числа используется намного реже. Задавая это количество, пользователь вынуждает средства форматирования вставлять ведущие нули перед маленькими числами. Совершенно очевидно, что указывать максимальное количестве цифр в целой части опасно — отображаемое число будет усечено, что приведет к более красиво отформатированному, но неверному результату.

Существуют также форматы, соответствующие другим национальным стандартам.

Например, рассмотрим числовые форматы, принятые в Германии, и выведем на экран тест. Существует встроенный объект под именем Locale.GERMANY, имеющий тип Locale, в котором хранятся правила форматирования чисел в соответствии с национальным стандартом Германии. Передавая объект типа Locale методу GetNumberlnstance, мы получим нужные нам средства форматирования.

double х = 10000.0/3.0; NumberFormat formatter = NumberFormat.getNumberInstance(Locale.GERMANY); System.out.println(formatter.format(x)); formatter = NumberFormat.getCurrencylnstance(Locale.GERMANY); System.out.printIn(formatter.format(x));

Этот фрагмент кода выведет на печать следующие числа:

3.333,333

3.333,33 DM


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: