Java,将两位小数舍入到两位小数

时间:2013-05-08 13:29:41

标签: java

我正在尝试将一个double舍入到最接近的两位小数,但它只是四舍五入到最接近的整数。

例如,19634.0而不是19634.95。

这是我用于舍入的当前代码

double area = Math.round(Math.PI*Radius()*Radius()*100)/100;

我看不出我哪里出错了。

非常感谢您的帮助。

5 个答案:

答案 0 :(得分:5)

好吧,Math.round(Math.PI*Radius()*Radius()*100)long100int

因此Math.round(Math.PI*Radius()*Radius()*100) / 100将变为long19634)。

将其更改为Math.round(Math.PI*Radius()*Radius()*100) / 100.0100.0double,结果也为double19634.95)。

答案 1 :(得分:2)

你真的想要将值舍入到2个位置,这会导致代码中的滚雪球舍入错误,或者只显示2位小数的数字吗?查看String.format()。复杂但非常强大。

答案 2 :(得分:2)

您可以使用DecimalFormat对象:

DecimalFormat df = new DecimalFormat ();
df.setMaximumFractionDigits (2);
df.setMinimumFractionDigits (2);

System.out.println (df.format (19634.95));

答案 3 :(得分:1)

您可能需要查看DecimalFormat类。

double x = 4.654;

DecimalFormat twoDigitFormat = new DecimalFormat("#.00");
System.out.println("x=" + twoDigitFormat.format());

这给出“x = 4.65”。模式中#0之间的区别在于始终显示零,如果最后一个为0,则不会显示#。

答案 4 :(得分:0)

以下示例来自this forum,但似乎正是您要找的。

 double roundTwoDecimals(double d) {
      DecimalFormat twoDForm = new DecimalFormat("#.##");
      return Double.valueOf(twoDForm.format(d));
 }