thousands numberformat number ejemplo clase java formatting bigdecimal number-formatting

java - numberformat - ¿Cómo imprimir valores formateados de BigDecimal?



number format java (5)

Otra forma que podría tener sentido para la situación dada es

BigDecimal newBD = oldBD.setScale(2);

Solo digo esto porque en algunos casos, cuando se trata de dinero que va más allá de 2 decimales, no tiene sentido. Llevar esto un paso más allá, esto podría conducir a

String displayString = oldBD.setScale(2).toPlainString();

pero simplemente quería resaltar el método setScale (que también puede tomar un segundo argumento de modo de redondeo para controlar cómo se maneja el último decimal. En algunas situaciones, Java obliga a especificar este método de redondeo).

Tengo una amount campo BigDecimal que representa dinero, y necesito imprimir su valor en el navegador en un formato como $123.00 , $15.50 , $0.33 .

¿Cómo puedo hacer eso?

(La única solución simple que veo es obtener floatValue de BigDecimal y luego usar NumberFormat para hacer una precisión de dos dígitos para la parte de fracción).


Para configurar miles de separador, digamos 123,456.78 , debe usar DecimalFormat :

DecimalFormat df = new DecimalFormat("#,###.00"); System.out.println(df.format(new BigDecimal(123456.75))); System.out.println(df.format(new BigDecimal(123456.00))); System.out.println(df.format(new BigDecimal(123456123456.78)));

Aquí está el resultado:

123,456.75 123,456.00 123,456,123,456.78

Aunque configuré la máscara #,###.00 , también formatea con éxito los valores más largos. Tenga en cuenta que el separador de coma (,) en el resultado depende de su configuración regional. Puede ser solo espacio () para la configuración regional rusa.


BigDecimal pi = new BigDecimal(3.14); BigDecimal pi4 = new BigDecimal(12.56); System.out.printf("%.2f",pi);

// imprime 3.14

System.out.printf("%.0f",pi4);

// imprime 13


BigDecimal(19.0001).setScale(2, BigDecimal.RoundingMode.DOWN)


public static String currencyFormat(BigDecimal n) { return NumberFormat.getCurrencyInstance().format(n); }

Utilizará su configuración regional para elegir su símbolo de moneda. Javadoc de NumberFormat