O que eu gostaria é de um método para converter um duplo em uma string que arredonde usando o método half-up - ou seja, se o decimal a ser arredondado for 5, ele sempre arredondará para o próximo número. Esse é o método padrão de arredondamento que a maioria das pessoas espera na maioria das situações.
Eu também gostaria que apenas dígitos significativos fossem exibidos - ou seja, não deveria haver zeros à direita.
Eu sei que um método para fazer isso é usar o String.format
método:
String.format("%.5g%n", 0.912385);
retorna:
0.91239
o que é ótimo, porém sempre exibe números com 5 casas decimais, mesmo que não sejam significativos:
String.format("%.5g%n", 0.912300);
retorna:
0.91230
Outro método é usar o DecimalFormatter
:
DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
retorna:
0.91238
No entanto, como você pode ver, isso usa arredondamentos semi-uniformes. Ou seja, será arredondado para baixo se o dígito anterior for par. O que eu gostaria é isso:
0.912385 -> 0.91239
0.912300 -> 0.9123
Qual é a melhor maneira de conseguir isso em Java?