我有java的问题然后我想分割大型长数字例如,如果我除165600139/86400000 = 1.9,但我的方法返回1没有舍入:/
public static long calcDaysBefore(Date date) {
int MILISECONDS_IN_DAY = 24 * 60 * 60 * 1000;
long days = 0;
if (date != null) {
long current = getCurrentDate().getTime() - date.getTime();
days = current / MILISECONDS_IN_DAY;
}
return days;
}
答案 0 :(得分:2)
它正在四舍五入,类似于做
days = Math.floor((double) current / MILISECONDS_IN_DAY);
如果你想要向上一半,你可以写
days = (current + MILISECONDS_IN_DAY/2) / MILISECONDS_IN_DAY;
使用浮点数你可以使用以下速度慢得多。
days = Math.round((double) current / MILISECONDS_IN_DAY);
如果你想要整理你可以做
days = (current + MILISECONDS_IN_DAY-1) / MILISECONDS_IN_DAY;
或
days = Math.ceil((double) current / MILISECONDS_IN_DAY);
btw毫秒有两个l's
答案 1 :(得分:1)
实际上结果是四舍五入的,有几种舍入模式,请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/math/RoundingMode.html,在您的情况下,您将获得完整天数。为了舍入到最接近的长度,我们可以使用
long days = Math.round(current / 8640000.0);
答案 2 :(得分:0)
施展加倍。
days = (double)current / (double)MILISECONDS_IN_DAY;