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.