Форматы чисел в Java

Форматы чисел в JavaАх, Java и её NumberFormat — это как швейцарский нож среди классов: умеет всё и даже чуть больше! Представьте себе международную вечеринку, где каждый гость приносит своё число и пытается объяснить, как он любит видеть свои дроби. Датчане, например, очень любят запятые — они ставят их между целой и дробной частью числа так же аккуратно, как бабушка ставит запятые в письмах: «Дорогой внук, 100,00 крон тебе прислала».

А вот англичане — они настоящие поклонники точек. Для них 100.00 — это не просто число, а почти произведение искусства с точкой на пьедестале.

И вот тут на сцену выходит наш герой — класс java.text.NumberFormat. Создать его для определённой локали — это как выбрать правильный акцент для разговора с иностранцем. Хотите говорить по-датски?

Пожалуйста! Форматируете число — и оно уже выглядит так же красиво, как булочка с корицей из Копенгагена.

Но если вы думаете, что этим всё ограничивается, то вы явно не встречали getCurrencyInstance().

Этот метод словно волшебное зеркало показывает сумму в валюте страны вашего выбора: датские кроны перед числом или евро после него — всё зависит от того, где вы сейчас пьёте кофе. Забавно наблюдать за округлениями: 99.99 превращается в 100 — почти магия! Хотя иногда эта магия напоминает анекдот про программиста: «Почему программист не может сходить на свидание?

Потому что всегда округляет до ближайшего целого».

А ещё у NumberFormat есть своя коллекция валютных секретов. С помощью getCurrency() можно узнать имя валюты или её символ — словно спросить у официанта: «А что у вас сегодня особенного?» И даже поменять валюту на лету через setCurrency(), будто меняешь носки перед важной встречей.

Не забываем про проценты! getPercentageInstance() превращает обычные числа в проценты с символом %, который всегда стоит после цифр, как верный друг после вечеринки.

Если хотите поиграть в строгого учителя математики — устанавливайте минимальное и максимальное количество цифр после запятой и выбирайте режим округления через setRoundingMode(). Например, можно заставить число 99.9 стать скромным 99 — настоящий дзен для любителей порядка!

И наконец, NumberFormat умеет читать числа из строк!

Представьте себе датчанина и англичанина за столом с одним числом «100,00». Для датчанина это сто целых с десятью сотыми; для англичанина же — целых десять тысяч! Вот так одна запятая может поссорить два народа сильнее любого футбольного матча.

В общем, java.text.NumberFormat — это ваш надёжный друг в мире чисел и локалей.

Он понимает языки денег и процентов лучше любого переводчика Google Translate. Так что если вдруг ваши числа начали вести себя странно в приложении — вспомните эту историю и улыбнитесь: возможно, они просто пытаются сказать вам по-датски или по-английски «привет»!