wake-up-neo.com

Doppelter Wert im Java-Format als Dollarbetrag

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

Verwenden Sie NumberFormat.getCurrencyInstance () :

double amt = 123.456;    

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

Ausgabe:

$123.46
44
arshajii

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

6
blitzen

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.

5
Yogendra Singh

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.

3
Peter Lawrey

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.

0
Amir Pashazadeh