Рассмотрим простой кодJava простая математика аномалия
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;
}
}
Теперь программа печатает Правда, если я запускаю его. Но если я заменю 24 * 40 * 60 * 60 * 1000 с 3456000000.0, он вернет False. Обратите внимание, что я добавляю .0 в конец, чтобы Java рассматривал его как double вместо int. int не может принять такое большое количество, но может удвоить.
Почему? Я подозреваю, что это способ сделать так, чтобы номера были представлены внутри страны.
«INT не может считать, что большое число, но double can " – sashkello
Вы можете использовать 3456E6 вместо –
на боковой ноте, лучше использовать более высокий уровень api для такого типа ta sks: jodatime или, по крайней мере, встроенный Календарь –