33

小数点以下2桁になるように、二重の「amt」をドル金額println( "$"+ドル+"。"+セント)としてフォーマットする必要があります。

そうするための最良の方法は何ですか?

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

5 に答える 5

62

NumberFormat.getCurrencyInstance()を使用します。

double amt = 123.456;    

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

出力:

$123.46
于 2012-12-09T20:23:04.437 に答える
9

DecimalFormat を使用できます

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

これにより、常に2dpで印刷されます。

しかし実際には、浮動小数点の問題があるため、お金のために BigDecimal を使用する必要があります。

于 2012-12-09T20:22:57.027 に答える
8

DecimalFormat10 進数値を目的の形式で出力するために使用します。

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

金額を米国の数値形式で表示したい場合は、次を試してください。

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

を使用する.00と、その存在に関係なく、常に 2 つの小数点が出力されます。10 進数が存在する場合にのみ 10 進数を出力する場合.##は、書式文字列で使用します。

于 2012-12-09T20:23:35.320 に答える
5

ワンライナーにprintfを使用できます

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

これにより、常に小数点以下 2 桁が出力され、必要に応じて丸められます。

于 2012-12-09T20:25:53.750 に答える
1

通貨の種類には double ではなく BigDecimal を使用します。Java Puzzlers book では、次のように表示されます。

System.out.println(2.00 - 1.10);

0.9 ではないことがわかります。

String.format() には、数値をフォーマットするためのパターンがあります。

于 2012-12-09T20:28:10.570 に答える