Страница 1 из 1
Сравнение двух чисел типа long
Добавлено: 13 дек 2012, 23:17
neoksi
Ребят подскажите как правильно сравнивать числа типа
long, чтоб можно было этим сравнением оперировать в операторах
if.
Как правильно записать вот такой код для long чисел, сейчас для сравнения приходится преобразовывать числа в тип
int, но это велосипед.
П.С. с типами в Java до сих пор мучаюсь. Буду благодарен за разъяснения.
Re: Сравнение двух чисел типа long
Добавлено: 13 дек 2012, 23:44
neoksi
Что-то вообще понять не могу, в одно месте корректного сравнения смог добиться только через преобразование в int, сейчас протестировал и успешно long сравнились, по коду long и Long не путаю...
Может можно как-то записать сравнение, чтоб если один из лонгов пришел как объект, то на результат сравнения это бы не повлияло?
Re: Сравнение двух чисел типа long
Добавлено: 14 дек 2012, 02:21
KamiSempai
neoksi писал(а):Что-то вообще понять не могу, в одно месте корректного сравнения смог добиться только через преобразование в int, сейчас протестировал и успешно long сравнились, по коду long и Long не путаю...
Может можно как-то записать сравнение, чтоб если один из лонгов пришел как объект, то на результат сравнения это бы не повлияло?
Если один из лонгов придет как объект на сравнение это не повлияет, сработает автоматическое приведение. Может сравниваются два объекта?
Re: Сравнение двух чисел типа long
Добавлено: 14 дек 2012, 03:09
neoksi
KamiSempai писал(а):Если один из лонгов придет как объект на сравнение это не повлияет, сработает автоматическое приведение. Может сравниваются два объекта?
Такая ситуация у меня возникает только в одном месте.
1) Получаю два long из разных источников;
2) Пропускаю оба long через метод, который как результат возвращает long число;
3) Получившиеся long'и пытаюсь сравнить и получаю как результат false.
Но если я делаю с long'ами следующий маневр
Код: Выделить всё
long longN1= MyFunc.ConvertTStoDateTS(MyFunc.getTSNowLong());
long longN2= MyFunc.ConvertTStoDateTS(myCalendar.returnUnixTSById(i));
int numC = Long.valueOf(longN1).intValue();
int numS = Long.valueOf(longN2).intValue();
if(numC>numS){
longN2=longN1;
numC=numS;
}
При этом аналогичная конструкция в другой части программы работает нормально, без перевода в int.
Re: Сравнение двух чисел типа long
Добавлено: 14 дек 2012, 08:18
neoksi
Само ушло. Видимо где-то в логике был допущен просчет, как раз перебирал логику запросов и все стало нормально работать.