То, что я хотел бы, - это метод преобразования двойного числа в строку, которая округляется с использованием метода половинного увеличения - то есть, если десятичное число округляется до 5, оно всегда округляется до следующего числа. Это стандартный метод округления, которого большинство людей ожидают в большинстве ситуаций.
Я также хотел бы, чтобы отображались только значащие цифры - то есть не должно быть никаких завершающих нулей.
Я знаю один способ сделать это, чтобы использовать String.format
метод:
String.format("%.5g%n", 0.912385);
возвращает:
0.91239
это здорово, однако всегда отображает числа с 5 десятичными разрядами, даже если они не имеют значения:
String.format("%.5g%n", 0.912300);
возвращает:
0.91230
Другой метод заключается в использовании DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
возвращает:
0.91238
Однако, как вы можете видеть, для этого используется округление до половины. То есть будет округляться, если предыдущая цифра четная. Что я хотел бы это:
0.912385 -> 0.91239
0.912300 -> 0.9123
Каков наилучший способ добиться этого в Java?