Сравнение нечисла в Go
Сейчас мы сравним нечисло с самим собой. Результат дробного
выражения 0.0 / 0.0 не ведет себя как обычное
число при таком сравнении.
Пусть такое значение записано в переменную. Проверка ==
дает false, даже если сравнивают одну переменную с собой:
x := 0.0 / 0.0
if x == x {
fmt.Println("equal")
} else {
fmt.Println("not equal") // сработает это
}
Неравенство нечисла с самим собой, наоборот, дает истину:
x := 0.0 / 0.0
if x != x {
fmt.Println("diff") // сработает это
} else {
fmt.Println("same")
}
Обычное дробное число при сравнении с собой дает истину. Этим оно и отличается от нечисла в этой проверке:
n := 1.5
if n == n {
fmt.Println("equal") // сработает это
} else {
fmt.Println("not equal")
}
Дана переменная:
v := 0.0 / 0.0
Выведите результат сравнения переменной v с v.
Дана переменная:
bad := 0.0 / 0.0
Если значение равно само себе, выведите "same", иначе
выведите "diff".
Дана переменная:
bad := 0.0 / 0.0
Если значение не равно само себе, выведите "Y",
иначе выведите "N".
Скажите, чем сравнение обычного дробного числа с самим собой отличается от сравнения нечисла.