Сравнение чисел с плавающей точкой в Kotlin

Операции над числами с плавающей запятой, обсуждаемые в этом посте:

  • Проверка на равенство: a == b и a != b
  • Операторы сравнения: a < b, a > b, a <= b, a >= b
  • Создание экземпляра диапазона и проверка диапазона: a..b, x in a..b, x !in a..b

Когда операнды a и b статически известны как Float или Double или их обнуляемые аналоги (тип объявляется или выводится или является результатом умного приведения), операции над числами и диапазоном, который они формируют, соответствуют IEEE 754 стандарту для арифметики с плавающей точкой.

Однако для поддержки общих вариантов использования и обеспечения общего упорядочения, когда операнды не статически типизированы как числа с плавающей запятой (например, Any, Comparable<...>, параметр типа), в операциях используются реализации equals и compareTo для Float и Double, который не соответствует стандарту, так что:

  • NaN считается равным себе
  • NaN считается больше, чем любой другой элемент, включая POSITIVE_INFINITY
  • -0.0 считается менее 0.0

Читайте также:


Комментарии

Популярные сообщения из этого блога

Строки в Kotlin

Наследование в Kotlin

Возврат и прыжки в Kotlin