//date is a java.util date
//date.getTime() = 1485462073669
int days = 3600;
long time = date.getTime() + (days * 24 * 60 * 60 * 1000L);
Это приведет к времени = 344094777669. Если я наброшу переменные дни, результат будет другим.Почему это выражение Java не отличает окончательное значение типа long?
date.getTime() + ((long) days * 24 * 60 * 60 * 1000L)
Это приведет к времени = 4639062073669
Почему нужно дней, чтобы быть отлиты как тип длинного для выражения правильно оценить?
http://stackoverflow.com/questions/1494862/multiplying-long-values –
Мне больше любопытно, почему это происходит. Второе выражение верно, но мне интересно, почему мне нужно заставить литье. Согласно первой ссылке, вся математика выполняется с наибольшим типом данных, поэтому не следует ли переводить все переменные до конца? Тем более, что последнее число определяется как длинный. –
Я не вижу, как этот код может давать разные результаты, если дата является одним и тем же объектом. Кастинг int до долгого не должен ничего менять. Вы уверены, что дата совпадает с тем же экземпляром в обоих случаях? A – davidxxx