Есть ли способ использовать DecimalFormat (или какой-либо другой стандартный форматтер) для форматирования таких чисел:
1,000,000 = > 1,00 М
1,234,567 = > 1,23 М
1,234,567,890 = > 1234,57 млн.
В основном разделение некоторого числа на 1 миллион, сохранение 2 десятичных знаков и пощечина "M" на конце. Я думал о создании нового подкласса NumberFormat, но он выглядит более сложным, чем я себе представлял.
Я пишу API, который имеет метод формата, который выглядит следующим образом:
public String format(double value, Unit unit); // Unit is an enum
Внутренне я сопоставляю объекты Unit с NumberFormatters. Реализация выглядит примерно так:
public String format(double value, Unit unit)
{
NumberFormatter formatter = formatters.get(unit);
return formatter.format(value);
}
Обратите внимание, что из-за этого я не могу ожидать, что клиент разделится на 1 миллион, и я не могу просто использовать String.format(), не обернув его в NumberFormatter.