如何以美元格式化双精度并按小数对齐?



我第一次使用Java编程,有人告诉我这个网站是一个很好的编程帮助来源。

我现在有点困难,因为我在用美元输入数字并按小数点对齐它们时遇到了麻烦。分配本身让用户输入初始存款和利率。然后,当您的初始存款翻倍时,该计划将停止。一切都按预期工作,但我无法让小数对齐。

while(Total < Deposit*2 )
{
Total = Total*(InterestRate/100+1.00);
Year = (Year + 1);
System.out.printf("%-16s %-24s %-15sn", Year + ".", fmt.format((Total-Deposit)), fmt.format(Total));
}

间距并将其放入货币格式不是问题,但截至目前,它对齐了美元符号。我个人认为它看起来更好,但教授说他希望小数点对齐,现在我死心塌地地想弄清楚。

我见过

String.format("%8.3f", number)

但是我不知道如何让它合并到我当前的代码中。

删除fmt.format并使用新格式,

而不是:

fmt.format((Total-Deposit))

只需使用:

Total - Deposit

并将格式从%-24s更改为%8.3f

"s"格式 字符串和"f"格式浮点数

格式取决于双精度值的长度。例如,对于totaldeposit等的随机值。部分结果如下所示。(不确定这是否是预期的(:

5.      -18950.0000000000000    1050.000000000000
6.      -18897.5000000000000    1102.500000000000
7.      -18842.3750000000000    1157.625000000000
8.      -18784.4937500000000    1215.506250000000
9.      -18723.7184375000000    1276.281562500000
10.      -18659.9043593750000    1340.095640625000
11.      -18592.8995773437500    1407.100422656250

我为此使用了下面的代码,

while(total < deposit*2 ) {
total = total*(interestRate/100+1.00);
year = (year + 1);
System.out.printf("%3s t %19.13f t %17.12fn", year + ".", total - deposit, total);
}

在这里,19.13f19 是指包括小数位在内的数字的总长度,而 13 仅指小数部分。

最新更新