Как правильно сравнивать double в java

Аватар пользователя Иван Полежаев
Иван Полежаев
01 апреля 2023

При сравнении значений типа double в Java следует быть осторожным из-за того, что внутреннее представление чисел с плавающей точкой может быть не точным. Например, значения, которые должны быть равными, могут отличаться на очень малое значение.

Вместо использования операторов == или != для сравнения значений типа double рекомендуется использовать методы класса Double, такие как equals() или compare(), которые предоставляют более точный способ сравнения чисел с плавающей точкой.

Метод equals():

double d1 = 0.1 + 0.2;
double d2 = 0.3;
if (Double.valueOf(d1).equals(Double.valueOf(d2))) {
    System.out.println("d1 и d2 равны");
}

В этом примере мы сравниваем два значения типа double, которые должны быть равными. Для сравнения используем метод equals(), который возвращает true, если значения равны, и false в противном случае.


Для сравнения двух значений типа double по их относительной близости друг к другу используйте метод compare():

double d1 = 0.1 + 0.2;
double d2 = 0.3;
if (Double.compare(d1, d2) == 0) {
    System.out.println("d1 и d2 близки");
}

Этот метод возвращает 0, если значения равны, 1, если первое значение больше второго, и -1, если первое значение меньше второго. Мы проверяем, равны ли значения, используя == 0

0 0

Похожие вопросы