Существует ли библиотека форматирования чисел Java, которая обрабатывает значащие цифры?

Встроенный DecimalFormat позволяет указывать только количество цифр справа от десятичного разряда.

Из-за ограничений представления чисел в виде двойного числа, форматирование числа должно включать в себя некоторый уровень округления. В общем случае, это округление должно быть до числа значащих цифр (по умолчанию это точность двойного числа), иначе ваш форматированный двойник в конечном итоге покажет что-то вроде 3,5999999 вместо 3,6.

Ближайшее решение, которое я мог бы Однако find использует

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 значащих цифр ( или так я читал).

15
задан mentics 30 March 2011 в 13:32
поделиться