Константа 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

Смотрите также

  • функцию abs,
    которая возвращает абсолютное значение числа
  • функцию ulp,
    которая возвращает размер единицы в последнем знаке
  • функцию nextUp,
    которая возвращает следующее представимое число
  • функцию nextDown,
    которая возвращает предыдущее представимое число