測試兩個時間戳長整型(Long)資料相減的問題
public void test() { long to = System.currentTimeMillis(); long from = to - 30*24*3600*1000L; ////長整型減長整型 long ft = to - 30*24*3600*1000; //30*24*3600*1000 == 2592000000,會因為越界,超過了int位元組的範圍(int範圍位 -2147483648~2147483647),會變成一個負數 -1702967296 int t = (int)to / 1000; //長整型先壓縮變成了負數,再去除10000,壓縮有可能正有可能負,但如果低資料型別裝不下則會出現錯誤。 long f = from / 1000; //先壓縮 int dd = (int)(from / 1000); //先將long整型壓縮了,再強轉到int,這是int資料型別可以裝下,故準確 System.out.println(to); System.out.println(from); System.out.println(ft); System.out.println(t); System.out.println((int)f); System.out.println(dd); System.out.println(Integer.MAX_VALUE); //2147483647 System.out.println(30*24*3600*1000); }
//時間戳是13位