Константа EPSILON
Константа EPSILON представляет собой машинный эпсилон -
наименьшее положительное число такое, что 1.0 + EPSILON ≠ 1.0.
Используется для сравнения чисел с плавающей точкой
с учётом погрешности вычислений.
Импорт
import kotlin.math.EPSILON
Синтаксис
const val EPSILON: Double = 2.220446049250313E-16
Пример
Выведем значение константы EPSILON:
println(EPSILON)
Результат выполнения кода:
Double 2.220446049250313E-16
Пример
Сравним два числа с плавающей точкой
с использованием EPSILON:
val 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")
}
Результат выполнения кода:
String "Numbers are equal"
Пример
Покажем разницу между обычным сравнением
и сравнением с использованием EPSILON:
val x = 1.0000000000000001
val y = 1.0
println("Direct comparison: ${x == y}")
println("Epsilon comparison: ${Math.abs(x - y) < EPSILON}")
Результат выполнения кода:
Direct comparison: false
Epsilon comparison: true
Пример
Проверим сложение единицы с EPSILON:
val result = 1.0 + EPSILON
println("1.0 + EPSILON = $result")
println("1.0 + EPSILON == 1.0: ${result == 1.0}")
Результат выполнения кода:
1.0 + EPSILON = 1.0000000000000002
1.0 + EPSILON == 1.0: false