truncar round redondear numeros limitar formato float decimales con java precision bigdecimal decimal-point

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.