考虑简单的代码
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 不能取那么大的数字,但 double 可以。
这是为什么 ?我怀疑这与数字在内部表示的方式有关。