四舍五入

时间:2010-11-18 09:29:08

标签: java

嘿伙计们,我试图将小数点后三位。

我使用了以下代码。

this.hours = Round(hours + (mins / 60), 3);

但它不起作用。 我哪里出错了? 感谢

6 个答案:

答案 0 :(得分:5)

您可以使用此功能:

 public static double Round(double number, int decimals)
    {
    double mod = Math.pow(10.0, decimals);
    return Math.round(number * mod ) / mod;
    }

答案 1 :(得分:2)

首先,您的所有变量都是int,因此您的除法结果也是int,因此Round没有。

然后看看:How to round a number to n decimal places in Java

答案 2 :(得分:2)

如果mins是一个整数,那么mins / 60将导致整数除法,总是得到0。

尝试从60更改为60.0,以确保将该分部视为浮点除法。

示例:

int hours = 5;
int mins = 7;

// This gives 5.0
System.out.println(Math.round(1000 * (hours + (mins / 60  ))) / 1000.0);

// While this gives the correct value 5.117.           (.0 was added)
System.out.println(Math.round(1000 * (hours + (mins / 60.0))) / 1000.0);

答案 3 :(得分:0)

如果mins是一个整数,你必须除以60.0得到一个可以舍入的浮点数

答案 4 :(得分:0)

尝试使用类似关注

this.hours = Round(hours + (((double)mins) / 60), 3); 

答案 5 :(得分:-1)

你做不到。双打没有小数位,因为它们是二进制的,而不是十进制的。你可以将它转换成具有小数位的东西,即十进制数,例如十进制数。 BigDecimal,并调整精度,或者您可以使用java.text的工具格式化输出,例如, DecimalFormat,或相应的System.out.printf()字符串。