天花板四舍五入到60 Java的倍数

时间:2017-07-22 08:07:31

标签: java rounding ceil

在提出问题之前,我想让大家知道我确实从过去的帖子中看到了一些类似的问题,但是在应用之后,却没有像预期的那样完成工作...... 所以基本上,我想将整数舍入到60的倍数。 举个例子,如果我想要围绕的数字是160到60的倍数,结果应该产生180; (因为60-> 120-> 180; 160最接近180而不是120); 我的测试代码如下所示:

public static void main (String[] args) {
  double a = Math.ceil(160/60)*60;
  System.out.println(a);
}

,它给出的输出是120.0;而不是180。

测试代码究竟出了什么问题才能产生120而不是180? 我错误地使用了ceil()吗?

2 个答案:

答案 0 :(得分:1)

您正在使用整数除法,这将产生一个整数。正如其他人所指出的那样:160/60会返回2,而不是2,66,你希望将其归结为3。

Go this URL and you will find the solution here. 

答案 1 :(得分:0)

由于您的输入是整数,输出也是整数, 实现自己的天花板功能会更清晰:

int ceil(int num, int mod) {
  int remainder = num % mod;
  if (remainder < mod / 2) {
    return num - remainder;
  }
  return num - remainder + mod;
}

例如,这将给出:

  • 180(160,60)和(150,60)
  • 120 for(149,60)