Java: formatta il doppio valore come importo in dollari

Ho bisogno di formattare il doppio “amt” come un importo in dollari println (“$” + dollari + “.” + Centesimi) in modo tale che ci siano due cifre dopo il decimale.

Qual è il modo migliore per farlo?

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) + "."); } 

Usa NumberFormat.getCurrencyInstance () :

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

Produzione:

 $123.46 

È ansible utilizzare un DecimalFormat

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

Questo ti darà una stampa con sempre 2dp.

Ma davvero, dovresti usare BigDecimal per soldi, a causa di problemi in virgola mobile

Utilizzare DecimalFormat per stampare un valore decimale nel formato desiderato es

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

Se desideri visualizzare l’importo in $ in formato numerico americano, prova:

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

Utilizzando .00 , stampa sempre due punti decimali indipendentemente dalla loro presenza. Se si desidera stampare decimali solo quando sono presenti, utilizzare .## nella stringa di formato.

Puoi usare printf per una fodera

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

Questo stamperà sempre due cifre decimali, arrotondando come richiesto.

Usa BigDecimal invece di double per i tipi di valuta. Nel libro Java Puzzlers vediamo:

 System.out.println(2.00 - 1.10); 

e puoi vedere che non sarà 0.9.

String.format () ha schemi per la formattazione dei numeri.