В то время как все целые типы в Rust реализуют Ord
, который подчеркивает полное упорядочение, типы с плавающей запятой реализуют только PartialOrd
. Это означает, что могут быть значения с плавающей запятой, которые нельзя сравнивать. Это сложно переварить, поскольку числа с плавающей запятой можно рассматривать как приближения к действительным числам, которые являются полностью упорядоченным множеством. Даже добавление положительной и отрицательной бесконечности позволяет полностью упорядочить множество действительных чисел. Почему этот странный выбор в Rust?
Это ограничение означает, что общий алгоритм сортировки/поиска может принимать только частичный порядок чисел. Стандарт IEEE 754, как представляется, обеспечивает общий предикат порядка.
Является ли NaN проблемой в общем коде?