使用%.2f的Java小数

时间:2014-09-23 14:08:31

标签: java

我是java的新手,而且我正在编写一个月付款计算器的代码,我遇到的唯一问题是我正在收集错误。我需要计算我所做的每月付款:

System.out.printf("Your monthly payment will be:$%.2f", payment);

这部分出来好了

现在我必须弄清楚他们在支付结束时会支付多少钱,所以我做了:

System.out.printf("You will be paying a total amount of $%.2f", payment * months);

这就是我的问题所在,在第一次打印出来的时候是四舍五入的付款,在第二次打印出它的四舍五入的付款时间几个月,我需要它只收取付款然后乘以几个月但是我无法弄清楚如何。任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

使用BigDecimal代替double。符号是丑陋的。使用new BigDecimal("12.34")让BigDecimal知道精度。由于您需要addmultiply等方法,因此使用情况更为丑陋。

数据库中的BTW也使用DECIMALS,具有固定的精度,而不是浮点近似。

出于某种原因,请进行搜索。

答案 1 :(得分:0)

System.out.printf("You will be paying a total amount of $%.2f", (Math.round((payment * 100.0)) / 100.0) * months);

这应该舍入到小数点后2位。它的作用是将小数位移到2个点然后再舍入然后向后移动2个点。如果您不想使用BigDecimal,那么如果您仍想使用基本类型double,则可以使用。

答案 2 :(得分:0)

你可以试试这个:

DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
double payment_rounded =Double.parseDouble( df.format(payment));

现在您将变量payment_rounded作为带有2位小数的double。并且您可以在两种情况下使用此变量。