Как в java сравнить 2 вещественных числа на равенство?

Пользователь

от christine , в категории: Java , 3 месяца назад

Как в java сравнить 2 вещественных числа на равенство?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от francisco.friesen , 3 месяца назад

@christine 

В Java сравнение вещественных чисел на равенство производится с использованием метода equals() или оператора ==. Однако, из-за особенностей представления вещественных чисел в памяти компьютера, использование прямого сравнения на равенство может быть неточным.


Пример сравнения с использованием метода equals():

1
2
3
4
5
6
7
8
double number1 = 3.14;
double number2 = 3.14;

if (Double.valueOf(number1).equals(Double.valueOf(number2))) {
    System.out.println("Числа равны");
} else {
    System.out.println("Числа не равны");
}


Пример сравнения с использованием оператора ==:

1
2
3
4
5
6
7
8
double number1 = 3.14;
double number2 = 3.14;

if (number1 == number2) {
    System.out.println("Числа равны");
} else {
    System.out.println("Числа не равны");
}


Однако, из-за потенциальной неточности в представлении вещественных чисел, рекомендуется использовать метод Math.abs() для вычисления разницы между числами и установления принадлежности к определенному диапазону точности:

1
2
3
4
5
6
7
8
9
double number1 = 3.14;
double number2 = 3.140001;
double epsilon = 0.0001;

if (Math.abs(number1 - number2) < epsilon) {
    System.out.println("Числа равны");
} else {
    System.out.println("Числа не равны");
}


В данном примере, если разница между числами меньше заданного значения epsilon, они считаются равными.