嘿伙计们,我试图将小数点后三位。
我使用了以下代码。
this.hours = Round(hours + (mins / 60), 3);
但它不起作用。 我哪里出错了? 感谢
答案 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
没有。
答案 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()字符串。