Встроенный десятичный формат позволяет указывать только количество цифр справа от десятичного разряда.
Из-за ограничений представления чисел в виде двойных чисел форматирование чисел должно включать некоторый уровень округления внутриЭто.В общем случае, это округление должно быть до числа значащих цифр (регистр по умолчанию равен точности двойного), иначе ваш отформатированный двойник в итоге будет отображать такие вещи, как 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 значащих цифр в любом случае (или так я прочитал).