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