考虑简单的代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String args[]){
System.out.println(isFresh("2013-03-26 06:25:34"));
}
private static boolean isFresh(String ts){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
try {
date = sdf.parse(ts);
if(( new Date().getTime() - date.getTime())>(24*40*60*60*1000)){ //Ignore events before 40 days.
return true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
}
现在,如果我运行该程序,它将打印True.但是如果我用3456000000.0替换24 * 40 * 60 * 60 * 1000,它将返回False.请注意,我在末尾附加了.0,以便Java将其视为double而不是int. int不能取那么多数字,而可以取两倍.
这是为什么 ?我怀疑这与内部表示数字的方式有关.