以30分钟(最接近的半小时)为增量进行四舍五入:[英] Round up in 30 min (nearest half-hour) increments:

问题描述

以30个增量绕过整数的最有效方法(在Java中)是什么.我的输出将是一个整数:

这是我的代码,它返回整数中的分钟.

long different = endTime.getTime() - startTime.getTime();
int idiff = TimeUnit.MILLISECONDS.toMinutes(different) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(different));

现在我想汇总这个整数.例如:

任何数字<= 30 =舍入到30:

31至60之间的任何数字=舍入至60

61至90之间的任何数字=舍入至90

91至120之间的任何数字=舍入至120

121至150之间的任何数字=舍入至150

推荐答案

添加比您想要的组少,然后分开和多个..因此,30 do

((value + 29) / 30) * 30

这假设您要0保持在0、30停留在30 ...

其他推荐答案

这应该有效:

x = ((x+30)/30) * 30;

示例:

((15+30)/30)*30 == (45/30)*30 == 1*30 == 30
((30+30)/30)*30 == (60/30)*30 == 2*30 == 60
((47+30)/30)*30 == (77/30)*30 == 2*30 == 60
...

编辑:

OP改变了要求(30应保持30):

x = ((x+29)/30) * 30;

示例:

((15+29)/30)*30 == (44/30)*30 == 1*30 == 30
((30+29)/30)*30 == (59/30)*30 == 1*30 == 30
((47+29)/30)*30 == (76/30)*30 == 2*30 == 60
...

本文地址:https://www.itbaoku.cn/post/978478.html