То, что я хотел бы, - это метод преобразования двойного числа в строку, которая округляется с использованием метода половинного увеличения, т. Е. Если десятичное число округляется до 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?