Класс NumberFormat

Класс NumberFormat языка Java используется для форматирования чисел.

Чтобы получить объект класса для форматирования в национальном стандарте по умолчанию, используются следующие методы:
NumberFormat.getlnstance() 
NumberFormat.getNumberlnstance() - идентичен getInstance()
NumberFormat.getCurrencylnstance() 
NumberFormat.getPercentlnstance()

Чтобы получить объект класса для форматирования в других национальных стандартах используются следующие методы:
NumberFormat.getlnstance(Locale locale) 
NumberFormat.getNumberlnstance(Locale locale) - идентичен getInstance(Locale locale)
NumberFormat.getCurrencylnstance(Locale locale) 
NumberFormat.getPercentlnstance(Locale locale)

Рассмотрим пример использования класса NumberFormat:

import java.text.NumberFormat;
import java.util.Locale;

public class NumberFormatDemo1 {
    public static void main(String[] args) {
        double number = 123.4567;
        Locale locFR = new Locale("fr");

        NumberFormat numberFormat1 = NumberFormat.getInstance();
        System.out.println("Число в текущей локали: " + numberFormat1.format(number));

        NumberFormat numberFormat2 = NumberFormat.getInstance(locFR);
        System.out.println("Число во французской локали: " + numberFormat2.format(number));

        NumberFormat numberFormat3 = NumberFormat.getCurrencyInstance();
        System.out.println("Денежная единица в текущей локали: " + numberFormat3.format(number));

        NumberFormat numberFormat4 = NumberFormat.getCurrencyInstance(locFR);
        System.out.println("Денежная единица во французской локали: " + numberFormat4.format(number));

        NumberFormat numberFormat5 = NumberFormat.getPercentInstance();
        System.out.println("Процент в текущей локали: " + numberFormat5.format(number));

        NumberFormat numberFormat6 = NumberFormat.getPercentInstance(locFR);
        System.out.println("Процент во французской локали: " + numberFormat6.format(number));
    }
}

Другие полезные методы NumberFormat класса:

setMaximumFractionDigits(int digits) - устанавливает максимальное количество цифр после десятичной точки в форматируемом объекте. Последняя отображаемая цифра округляется.

setMaximumlntegerDigits(int digits) - устанавливает максимальное количество цифр перед десятичной точкой в форматируемом объекте. Используйте этот метод с предельной осторожностью. Если вы зададите слишком мало цифр, число будет просто усечено, и результат станет совершенно неправильным!

setMinimumFractionDigits(int digits) - устанавливает минимальное количество цифр после десятичной точки в форматируемом объекте. Если количество цифр в дробной части числа меньше минимального, то на экран выводятся замыкающие нули.

setMinimumlntegerDigits(int digits) - устанавливает минимальное количество цифр перед десятичной точкой в форматируемом объекте. Если количество цифр в целой части числа меньше минимального, то на экран выводятся ведущие нули.

getMaximumFractionDigits() - возвращает максимальное количество цифр после десятичной точки в форматируемом объекте.

getMinimumFractionDigits() - возвращает минимальное количество цифр после десятичной точки в форматируемом объекте.

Рассмотрим пример использования методов setMaximumFractionDigits(int digits), getMaximumFractionDigits(), setMaximumlntegerDigits(int digits):

import java.text.NumberFormat;

public class NumberFormatDemo2 {
    public static void main(String[] args) {
        double d = 123.45678;
        NumberFormat nf = NumberFormat.getInstance();

        System.out.print("Максимальное количество знаков в дробной части "
                + nf.getMaximumFractionDigits() + ": ");
        System.out.println(nf.format(d));

        nf.setMaximumFractionDigits(7);
        System.out.print("Максимальное количество знаков в дробной части 7: ");
        System.out.println(nf.format(d));

        nf.setMaximumIntegerDigits(2);
        System.out.print("Максимальное количество знаков в целой части 2: ");
        System.out.println(nf.format(d));
    }
}

Следующий пример демонстрирует использование методов getMinimumFractionDigits(), setMinimumlntegerDigits(int digits), setMinimumFractionDigits(int digits) класса NumberFormat:

import java.text.NumberFormat;

public class NumberFormatDemo3 {
    public static void main(String[] args) {
        double d = 123.45678;
        NumberFormat nf = NumberFormat.getInstance();

        System.out.print("Минимальное количество знаков в дробной части "
                + nf.getMinimumFractionDigits() + ": ");
        System.out.println(nf.format(d));

        nf.setMinimumFractionDigits(7);
        System.out.print("Минимальное количество знаков в дробной части 7: ");
        System.out.println(nf.format(d));

        nf.setMinimumIntegerDigits(5);
        System.out.print("Минимальное количество знаков в целой части 5: ");
        System.out.println(nf.format(d));
    }
}

Метод parse() класса NumberFormat преобразует строку к числу. Если перед вызовом метода parse() вызвать метод setParseIntegerOnly(true), как показано в следующем примере, то преобразовываться будет только целая часть числа.

import java.text.NumberFormat;
import java.text.ParseException;

public class NumberFormatDemo4 {
    public static void main(String[] args) throws ParseException {
        NumberFormat nf = NumberFormat.getInstance();
        System.out.println(nf.parse("1234,567"));
        nf.setParseIntegerOnly(true);
        System.out.println(nf.parse("1234,567"));
    }
}
Read also:
Comments