Как правильно сравнивать double в java
При сравнении значений типа 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