Есть ли способ использовать DecimalFormat (или какой-либо другой стандартный форматер) для форматирования чисел, как это:
1 000 000 => 1,00M
1,234,567 => 1,23M
1,234,567,890 => 1234,57M
В основном, разделив некоторое число на 1 миллион, сохранив 2 десятичных знака, и добавив в конце букву «М». Я думал о создании нового подкласса 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.