//Вот допустим есть два нижеперечисленных кода :
double a = 1.000001;
double b = 1.000002;
if ( (b - a) < 0.0001 )
System.out.println("Числа равны");
else
System.out.println("Числа не равны");
//и следующий код :
double a = 1.000001;
double b = 1.000002;
if ( Math.abs(b - a) < 0.0001 )
System.out.println("Числа равны");
else
System.out.println("Числа не равны");
//То какая разница между ними, при добавлении Math.abs?
silekt
15 уровень
Не совсем понял, зачем нужен Math.abs
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Катя Левкович
29 октября 2023, 09:44
В случае первого кода, если b < a, то получаем результат в любом случае отрицательный. Даже если числа совсем не близко - например, a = 10, b = 1. b - a = -9, -9 меньше 0.0001. То есть, 10 и 1 равны? Для того, чтобы сравнение проходило независимо от того, какое из чисел (a или b) больше, необходимо установить модуль Math.abs(), чтобы находить не разность, а именно разницу (положительную) между числами. И если между ними разница меньше, чем 0.0001, то числа очень близки по значению - практически равны.
Тогда с модулем при a = 10 и b = 1 разница получится 9, а 9 > 0.0001. Числа не равны. Результат будет такой же, как при b = 10 и a = 1. Как и нужно.
0
Edvard Rayzo System Engineer
12 октября 2023, 20:29
А если еще подумать? 1-177 это всяко меньше 0.
0
Сергеев ВикторMaster
12 октября 2023, 01:31
какой ответ будет?
0
silekt
12 октября 2023, 14:19
ответ: числа не равны
0
Сергеев ВикторMaster
21 октября 2023, 21:03
ну разница на экране, один код работает корректно, другой нет
0
Денис Enterprise Java Developer
22 октября 2023, 08:07
Ретро консоль блин :) это отдельное приложенько или плагин?
0
Сергеев ВикторMaster
22 октября 2023, 19:01
Первый попавшийся онлайн компилятор)
+1
Денис Enterprise Java Developer
22 октября 2023, 19:22
хех ) я вспомнил что в вин терминале была такая темка, вот и думал как это ты ее в идею подтянул )
0
Денис Enterprise Java Developer
10 октября 2023, 14:33
0