0

我对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;
}
4

3 回答 3

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);

顺便说一句,毫秒有两个 l

于 2013-03-07T07:47:23.187 回答
1

实际上结果是四舍五入的,有几种舍入模式,请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/math/RoundingMode.html,在你的情况下你得到的数量整天。为了四舍五入到最接近的长度,我们可以使用

long days = Math.round(current / 8640000.0);
于 2013-03-07T07:51:20.687 回答
0

投加倍。

days = (double)current / (double)MILISECONDS_IN_DAY;
于 2013-03-07T07:47:12.413 回答