Java格式修饰符在字符串中加倍

时间:2013-03-23 16:05:10

标签: java printf formatting

我在Java大学接受了一项任务,我必须使用printf格式化输出到控制台。这一切都很好,但是由于某些原因我获得了输出10500.000000000002,正确的输出应该是10500.00。我尝试使用%0.2f,但因为我格式化为String我无法做到。

这是有问题的一行:

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

您能否建议一种正确格式化的方法?请记住,这是java的入门课程,这意味着我在编程方面是一场彻底的灾难。

2 个答案:

答案 0 :(得分:2)

DecimalFormat df = new DecimalFormat("0.##");
String result = df.format(10500.000000000002);

答案 1 :(得分:1)

%0.2f不正确。您应该使用%.2f

示例:

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

如果ageDepreciationAmountString,那么

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

BTW我们通常在printf之后添加\n,而不是之前。

输出:

Age Depreciation Amount: 10500.00

如果要使用空格填充输出,可以使用%66.2,其中66是总宽度,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