Сравнение чисел с плавающей точкой в 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: представление, явные преобразования
Комментарии
Отправить комментарий