Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

NumberFormat

Форматирует числа, деньги и проценты по правилам выбранной страны.

Доступно с: Java 1.1

Синтаксис

public abstract class NumberFormat extends Format

Примеры

Одно число в разных локалях:

void main() {
    double amount = 1234567.891;
    IO.println(NumberFormat.getInstance(Locale.US).format(amount));
    IO.println(NumberFormat.getInstance(Locale.GERMANY).format(amount));
    IO.println(NumberFormat.getCurrencyInstance(Locale.US).format(amount));
    IO.println(NumberFormat.getPercentInstance(Locale.US).format(0.256));
}

Результат:

1,234,567.891
1.234.567,891
$1,234,567.89
26%

Короткая запись (Java 12) и разбор строки с запятой:

void main() throws Exception {
    var compact = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
    IO.println(compact.format(1_250_000));
    IO.println(NumberFormat.getInstance(Locale.GERMANY).parse("3,14"));
}

Результат:

1M
3.14

Примечания

Всегда передавайте локаль явно: без неё используются настройки системы, и вывод на разных компьютерах будет разным. Класс в пакете java.text; объекты не потокобезопасны. Для простого вывода с двумя знаками часто хватает String.format(Locale.ROOT, "%.2f", x).

См. также

  • String.format() — Собирает строку по шаблону с подстановками вроде %s и %d.
  • BigDecimal — Точное десятичное число — для денег и расчётов, где недопустимы ошибки округления double.
  • Double.parseDouble() — Превращает строку с дробным числом в double.

Вопросы и ответы по теме

В учебнике

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.