2013-03-07 40 views
0

我有java的問題劃分的話,我想divade例如大長型NUMERICS如果我把86400000分之165600139= 1.9,但我的方法的返回1,沒有精磨削:/大長NUMERICS與

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; 
} 
+1

您可能也有興趣在['DateUtils'(http://developer.android.com/reference/android/text/format/DateUtils.html)類;好像你可能會重新發明輪子。 :) – kcoppock 2013-03-07 07:48:50

回答

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的

0

投了一倍。

days = (double)current/(double)MILISECONDS_IN_DAY; 
+0

這不會做任何舍入,除了舍入錯誤。 ;) – 2013-03-07 07:48:04