round - redondear a dos decimales java
¿Cómo mostrar un número con siempre 2 puntos decimales usando BigDecimal? (5)
BigDecimal es inmutable, cualquier operación que incluya setScale (2, BigDecimal.ROUND_HALF_UP) produce un nuevo BigDecimal. El código correcto debe ser
BigDecimal bd = new BigDecimal(1);
// bd.setScale(2, BigDecimal.ROUND_HALF_UP); bd.setScale does not change bd
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(bd);
salida
1.00
Estoy usando BigDecimal para obtener algunos valores de precios. El requisito es algo como esto, cualquiera que sea el valor que obtengamos de la base de datos, el valor mostrado debe tener 2 puntos decimales.
P.ej:
el valor obtenido es 1 - debe mostrarse como 1.00
el valor obtenido es 1.7823 - debe mostrarse como 1.78
Estoy usando setScale(2, BigDecimal.ROUND_HALF_UP)
pero todavía algunos lugares, si los datos de DB son un número entero, ¡entonces se está mostrando el mismo!
Me refiero a que si el valor es 0 de DB se muestra como 0 solamente. Quiero que se muestre como 0.00
Gracias
BigDecimal.setScale funcionaría.
Necesitas usar algo como NumberFormat
con la configuración regional apropiada para format
NumberFormat.getCurrencyInstance().format(bigDecimal);
Para formatear números en JAVA puedes usar:
System.out.printf("%1$.2f", d);
donde d es tu variable o numero
o
DecimalFormat f = new DecimalFormat("##.00"); // this will helps you to always keeps in two decimal places
System.out.println(f.format(d));
Puedes usar el formato redondeado.
BigDecimal bd = new BigDecimal(2.22222);
System.out.println(bd.setScale(2,BigDecimal.ROUND_UP));
Espero que esto te ayude.