我在Java大学接受了一项任务,我必须使用printf
格式化输出到控制台。这一切都很好,但是由于某些原因我获得了输出10500.000000000002
,正确的输出应该是10500.00
。我尝试使用%0.2f
,但因为我格式化为String
我无法做到。
这是有问题的一行:
System.out.printf("\nAge Depreciation Amount:%66s","$"+ ageDepreciationAmount);
您能否建议一种正确格式化的方法?请记住,这是java的入门课程,这意味着我在编程方面是一场彻底的灾难。
答案 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);
如果ageDepreciationAmount
是String
,那么
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