Встроенный DecimalFormat позволяет вам указывать количество цифр справа от десятичной точки.
Из-за ограничений представления чисел как двойных, форматирование чисел должно включать некоторый уровень округления внутри него. В общем случае это округление должно состоять из нескольких значимых цифр (по умолчанию используется точность двойника), иначе ваш двойной форматирование будет отображаться как 3.5999999 вместо 3.6.
Самое близкое решение, которое я смог найти, это использовать
new BigDecimal(double, new MathContext(14, RoundingMode.HALF_EVEN).stripTrailingZeros().toPlainString()
однако, что обеспечивает только один формат. Если мне нужно отформатировать его вообще (разделитель групп, десятичный разделитель, ограничение числа цифр, заполнение и т.д.), В библиотеке JDK ничего нет.
Существует ли библиотека форматирования общего номера, которая будет обрабатывать округление до значительных цифр правильно?
Кто-то попросил примеров. Итак, допустим, я хотел отформатировать до 4 значащих цифр, а затем:
0.000003599999 -> 0.0000036
4.12345 -> 4.123
1234.345 -> 1234
Общий подход, который мы бы предприняли, состоял бы в округлении до 14 цифр, поскольку в зависимости от обстоятельств двойной может содержать только 15-17 значащих цифр (или так я читал).