Функция requireFinite

Функция requireFinite проверяет, является ли число конечным (не бесконечным и не NaN). Если число не является конечным, функция выбрасывает исключение IllegalArgumentException. Применяется к числам с плавающей точкой типа Float или Double.

Импорт

kotlinimport kotlin.math.requireFinite

Синтаксис

kotlininline fun requireFinite(value: Double, name: String? = null): Double
kotlininline fun requireFinite(value: Float, name: String? = null): Float

Параметры

value - число типа Double или Float для проверки на конечность.

name - необязательное имя переменной, которое будет отображаться в сообщении об ошибке при выбрасывании исключения.

Пример

Проверим конечность обычного числа:

kotlinval num: Double = 15.7
val res: Double = requireFinite(num)
println("Number is finite: $res")

Результат выполнения кода:

kotlinNumber is finite: 15.7

Пример

Проверим число NaN:

kotlintry {
  val num: Double = Double.NaN
  val res: Double = requireFinite(num, "testValue")
  println("Number is finite: $res")
} catch (e: IllegalArgumentException) {
  println("Error: ${e.message}")
}

Результат выполнения кода:

kotlinError: testValue must be finite.

Пример

Проверим положительную бесконечность:

kotlintry {
  val num: Double = Double.POSITIVE_INFINITY
  val res: Double = requireFinite(num)
  println("Number is finite: $res")
} catch (e: IllegalArgumentException) {
  println("Error: ${e.message}")
}

Результат выполнения кода:

kotlinError: must be finite.

Пример

Проверим отрицательную бесконечность с указанием имени переменной:

kotlintry {
  val num: Float = Float.NEGATIVE_INFINITY
  val res: Float = requireFinite(num, "temperature")
  println("Temperature is finite: $res")
} catch (e: IllegalArgumentException) {
  println("Validation error: ${e.message}")
}

Результат выполнения кода:

kotlinValidation error: temperature must be finite.

Пример

Использование функции для валидации входных данных:

kotlinfun calculateSquareRoot(x: Double): Double {
  val validX = requireFinite(x, "input value")
  return kotlin.math.sqrt(validX)
}

try {
  val result = calculateSquareRoot(Double.NaN)
  println("Result: $result")
} catch (e: IllegalArgumentException) {
  println("Calculation error: ${e.message}")
}

Результат выполнения кода:

kotlinCalculation error: input value must be finite.

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