Константа EPSILON
Константа EPSILON представляет собой машинный эпсилон -
наименьшее положительное число такое, что 1.0 + EPSILON ≠ 1.0.
Используется для сравнения чисел с плавающей точкой
с учётом погрешности вычислений.
Импорт
kotlinimport kotlin.math.EPSILON
Синтаксис
kotlinconst val EPSILON: Double = 2.220446049250313E-16
Пример
Выведем значение константы EPSILON:
kotlinprintln(EPSILON)
Результат выполнения кода:
kotlinDouble 2.220446049250313E-16
Пример
Сравним два числа с плавающей точкой
с использованием EPSILON:
kotlinval a = 0.1 + 0.2
val b = 0.3
if (Math.abs(a - b) < EPSILON) {
println("Numbers are equal")
} else {
println("Numbers are not equal")
}
Результат выполнения кода:
kotlinString "Numbers are equal"
Пример
Покажем разницу между обычным сравнением
и сравнением с использованием EPSILON:
kotlinval x = 1.0000000000000001
val y = 1.0
println("Direct comparison: ${x == y}")
println("Epsilon comparison: ${Math.abs(x - y) < EPSILON}")
Результат выполнения кода:
kotlinDirect comparison: false
Epsilon comparison: true
Пример
Проверим сложение единицы с EPSILON:
kotlinval result = 1.0 + EPSILON
println("1.0 + EPSILON = $result")
println("1.0 + EPSILON == 1.0: ${result == 1.0}")
Результат выполнения кода:
kotlin1.0 + EPSILON = 1.0000000000000002
1.0 + EPSILON == 1.0: false