Java, как правильно сравнивать double? - Вопросы по Java
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Java, как правильно сравнивать double?

Регистрация
12 Июн 2013
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
Здравствуйте, такая ситуация: в моёй программе везде фигурируют double и Double, они содержат числа с одним знаком после точки ( double x=2.5, y= 3.5, z= 4.5, ..), и эти числа периодически нужно сравнивать! Подскажите пожалуйста могу ли я их сравнивать просто операторами больше >,==,< для получения такого результата:
double x = 225.5;
Double y = new Double(225.5);
System.out.Println(x==y.doubleValue());
или в данном случае (при такой инициаллизации переменных значениями с одним числом после точки) эти числа могу быть разные при видимо одинаковом значении? Спасибо!
 
Регистрация
4 Окт 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Сравнивать числа с плавающей запятой в любом языке программирования правильнее примерно так abs(a-b)<eps // типа равно
 
Регистрация
31 Авг 2013
Сообщения
86
Репутация
-1
Спасибо
1
Монет
0
В выражении (x==y.doubleValue()) сравниваются примитивные типы, поэтому использование простого равенства является верным. Другое дело, что в double накапливаются ошибки округления и в результате вычислений вместо 4 может получиться 3.999998 Тогда простое сравнение будет неуместным. О решении этой проблемы отписался Иван
 
Сверху Снизу