1

私はJavaの大学でprintf、コンソールへの出力をフォーマットするために使用しなければならない課題を受け取りました。それはすべて素晴らしくてダンディでしたが、何らかの理由で私は出力を取得しています10500.000000000002、正しい出力はであるはずです10500.00。を使おうとしました%0.2fが、フォーマットしたのでString使えません。

これは問題の行です:

System.out.printf("\nAge Depreciation Amount:%66s","$"+ ageDepreciationAmount);

これを適切にフォーマットする方法を提案できますか?これはJavaの入門コースであることに注意してください。つまり、プログラミングに関しては、私は完全な惨事です。

4

2 に答える 2

2
DecimalFormat df = new DecimalFormat("0.##");
String result = df.format(10500.000000000002);
于 2013-03-23T16:07:35.613 に答える
1

%0.2f正しくありません。使用する必要があります%.2f

例:

System.out.printf("Age Depreciation Amount: %.2f\n", ageDepreciationAmount);

またはもしそうageDepreciationAmountならString

System.out.printf("Age Depreciation Amount: %.2f\n", Double.parseDouble(ageDepreciationAmount));

ところで、私たちは通常、\n前ではなく、printfの後に追加します。

出力:

Age Depreciation Amount: 10500.00

出力をスペースで埋める場合は、を使用します%66.2。ここ66で、は合計幅、2は小数点以下の桁数です。ただし、これは数値に対してのみ機能します。ドル記号も印刷する必要があるため、次の2つの手順で実行できます。

    double ageDepreciationAmount = 10500.000000000002;
    double ageDepreciationAmount2 = 100500.000000000002;

    String tmp = String.format("$%.2f", ageDepreciationAmount);
    String tmp2 = String.format("$%.2f", ageDepreciationAmount2);

    System.out.printf("Age Depreciation Amount: %20s\n", tmp);
    System.out.printf("Age Depreciation Amount: %20s\n", tmp2);

出力:

Age Depreciation Amount:            $10500.00
Age Depreciation Amount:           $100500.00
于 2013-03-23T16:12:31.160 に答える