Ich muss das doppelte "amt" als Dollar-Betrag println ("$" + euros + "." + Cents) so formatieren, dass es zwei Dezimalstellen gibt.
Was ist der beste Weg, dies zu tun?
if (payOrCharge <= 1)
{
System.out.println("Please enter the payment amount:");
double amt = keyboard.nextDouble();
cOne.makePayment(amt);
System.out.println("-------------------------------");
System.out.println("The original balance is " + cardBalance + ".");
System.out.println("You made a payment in the amount of " + amt + ".");
System.out.println("The new balance is " + (cardBalance - amt) + ".");
}
else 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) + ".");
}
Verwenden Sie NumberFormat.getCurrencyInstance () :
double amt = 123.456;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
System.out.println(formatter.format(amt));
Ausgabe:
$123.46
Sie können ein DecimalFormat verwenden
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(amt));
Das gibt Ihnen einen Ausdruck mit immer 2dp.
Aber eigentlich sollten Sie BigDecimal wegen Fließkomma-Problemen für Geld verwenden
Verwenden Sie DecimalFormat
, um einen Dezimalwert im gewünschten Format zu drucken, z.
DecimalFormat dFormat = new DecimalFormat("#.00");
System.out.println("$" + dFormat.format(amt));
Wenn Sie den Betrag in US-Nummern anzeigen möchten, versuchen Sie Folgendes:
DecimalFormat dFormat = new DecimalFormat("####,###,###.00");
System.out.println("$" + dFormat.format(amt));
Mit .00
werden unabhängig von ihrer Anwesenheit immer zwei Dezimalstellen ausgegeben. Wenn Sie nur dezimal drucken möchten, wenn sie vorhanden sind, verwenden Sie .##
in der Formatzeichenfolge.
Sie können printf für einen Liner verwenden
System.out.printf("The original balance is $%.2f.%n", cardBalance);
Dabei werden immer zwei Dezimalstellen ausgegeben, und es wird nach Bedarf gerundet.
Verwenden Sie BigDecimal anstelle von double für Währungstypen. In Java Puzzlers Buch sehen wir:
System.out.println(2.00 - 1.10);
und Sie können sehen, dass es nicht 0,9 sein wird.
String.format () enthält Muster zum Formatieren von Zahlen.