Java – valor doble en formato como cantidad en dólares

Necesito formatear el doble “amt” como una cantidad en dólares println (“$” + dólares + “.” + Centavos) de modo que haya dos dígitos después del decimal.

¿Cuál es la mejor manera de hacerlo?

if (payOrCharge = 2) { System.out.println("Please enter the charged amount:"); double amt = keyboard.nextDouble(); cOne.addCharge(amt); System.out.println("-------------------------------"); System.out.println("The original balance is $" + cardBalance + "."); System.out.println("You added a charge in the amount of " + amt + "."); System.out.println("The new balance is " + (cardBalance + amt) + "."); } 

Use NumberFormat.getCurrencyInstance () :

 double amt = 123.456; NumberFormat formatter = NumberFormat.getCurrencyInstance(); System.out.println(formatter.format(amt)); 

Salida:

 $123.46 

Puedes usar un DecimalFormat

 DecimalFormat df = new DecimalFormat("0.00"); System.out.println(df.format(amt)); 

Eso le dará una impresión con siempre 2dp.

Pero en realidad, deberías usar BigDecimal por dinero, debido a cuestiones de coma flotante

Use DecimalFormat para imprimir un valor decimal en el formato deseado, por ejemplo

 DecimalFormat dFormat = new DecimalFormat("#.00"); System.out.println("$" + dFormat.format(amt)); 

Si desea mostrar $ cantidad en formato de número de Estados Unidos, intente:

 DecimalFormat dFormat = new DecimalFormat("####,###,###.00"); System.out.println("$" + dFormat.format(amt)); 

Usando .00 , siempre imprime dos decimales independientemente de su presencia. Si desea imprimir decimal solo cuando están presentes, utilice .## en la cadena de formato.

Puedes usar printf para un trazador de líneas

 System.out.printf("The original balance is $%.2f.%n", cardBalance); 

Esto siempre imprimirá dos decimales, redondeando según sea necesario.

Use BigDecimal en lugar del doble para los tipos de moneda. En el libro de Java Puzzlers vemos:

 System.out.println(2.00 - 1.10); 

y puedes ver que no será 0.9.

String.format () tiene patrones para formatear números.