Java 如何设置美元货币的双精度格式并按小数对齐?

Java 如何设置美元货币的双精度格式并按小数对齐?,java,formatting,currency,Java,Formatting,Currency,我正在上第一堂使用Java的编程课,有人告诉我这个网站是编程帮助的好来源 我现在有点困难,因为我很难用美元来计算数字,也很难用小数点来对齐。分配本身让用户输入初始存款和利率。当您的初始存款翻倍时,该计划就会停止。一切正常,但我无法让小数对齐 while(Total < Deposit*2 ) { Total = Total*(InterestRate/100+1.00); Year = (Year +

我正在上第一堂使用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));
            }

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

删除
fmt.format
并使用新格式

而不是:

fmt.格式((存款总额))

只需使用:

总计-存款

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


“s”设置字符串格式,“f”设置浮点数格式取决于双精度值的长度。例如,对于
总计
存款
等的一些随机值,部分结果如下所示。(不确定这是否是预期的结果):

我使用了下面的代码

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);
}
while(总计<存款*2){
总计=总计*(利率/100+1.00);
年份=(年份+1);
System.out.printf(“%3s\t%19.13f\t%17.12f\n”,年份+”,总计-存款,总计);
}

在这里,在
19.13f中
19指的是数字的总长度,包括小数点,而13指的只是小数部分。

这个和这个答案应该对你有帮助。@madsuff我将变量改成了你的选项,看起来也更好@GeorgeWeekson我看到了那篇文章,但我在合并空格、用美元表示以及按小数点对齐时遇到了问题。我可以得到前两个,但不是全部三个:(哦,好的,这是有道理的。关于这个选项的唯一一点是fmt.format将其转换为货币形式,%-24s将它们隔开,因为它们必须放在标题下的一列中。因此,如果我更改了字符串格式,它们将再次聚集在一起。@Blayze如果你想删除货币符号,请看一下这篇文章。以及改为使用格式化的字符串。这很有效!这也是它应该如何格式化的。唯一的问题是,它将其从我需要的货币格式中去掉:/。我不确定如何使用美国货币的区域设置,以及如何执行您所做的操作,因为如果我这样做,我会出错。(我认为,因为在这一点上,它不再是一个浮点,而是一个字符串)?
 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);
}