用圆形分割的大长数字

时间:2013-03-07 07:45:06

标签: java android

我有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;
}

3 个答案:

答案 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;