Cómo redondear un número a n lugares decimales en Java

Lo que me gustaría es un método para convertir un doble en una cadena que se redondea utilizando el método de media altura, es decir, si el decimal que se redondea es 5, siempre se redondea al número anterior. Este es el método estándar de redondeo que la mayoría de las personas espera en la mayoría de las situaciones.

También me gustaría que solo se mostraran dígitos significativos, es decir, no debería haber ceros finales.

Sé que un método para hacer esto es usar elString.format método:

String.format("%.5g%n", 0.912385);

devoluciones:

0.91239

lo que es genial, sin embargo, siempre muestra números con 5 decimales, incluso si no son significativos:

String.format("%.5g%n", 0.912300);

devoluciones:

0.91230

Otro método es usar elDecimalFormatter:

DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);

devoluciones:

0.91238

Sin embargo, como se puede ver, esto utiliza el redondeo a medias. Es decir, se redondeará hacia abajo si el dígito anterior es par. Lo que me gustaría es esto:

0.912385 -> 0.91239
0.912300 -> 0.9123

¿Cuál es la mejor manera de lograr esto en Java?

Respuestas a la pregunta(29)

Su respuesta a la pregunta