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