首页 > 解决方案 > 如何以美元格式化双精度并按小数对齐?

问题描述

我正在上我的第一个使用 Java 的编程课程,有人告诉我这个站点是一个很好的编程帮助来源。

我现在有点困难,因为我无法将数字以美元表示,也无法按小数点对齐。分配本身让用户输入初始存款和利率。当您的初始存款翻倍时,该程序将停止。一切都按预期工作,但我无法对齐小数点。

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

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

我见过

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

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

标签: javaformattingcurrency

解决方案


格式取决于您的 Double 值可以有多长。例如,对于一些随机值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.12f\n", year + ".", total - deposit, total);
}

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


推荐阅读