Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting Rust为什么不通过f64和f32的Ord特性实现总订购?_Sorting_Rust_Floating Point_Partial Ordering - Fatal编程技术网

Sorting Rust为什么不通过f64和f32的Ord特性实现总订购?

Sorting Rust为什么不通过f64和f32的Ord特性实现总订购?,sorting,rust,floating-point,partial-ordering,Sorting,Rust,Floating Point,Partial Ordering,Rust中的所有整数类型都实现了强调全排序的功能,而浮点类型只实现了。这意味着可能存在无法比较的浮点值。这似乎很难理解,因为浮点数可以被认为是实数的近似值,而实数恰好是一个完全有序的集合。甚至正负无穷的加法也能使实数集保持完全有序。为什么要选择生锈 此限制意味着通用排序/搜索算法只能假定数字的偏序。IEEE754标准似乎提供了一种新的解决方案 NaN在泛型代码中有这么多问题吗 确切地说,你的问题是什么?您是在问NaN是否存在,还是可以通过意外或自愿计算获得?是的,它可以,它可以。当提供的顺序不是

Rust中的所有整数类型都实现了强调全排序的功能,而浮点类型只实现了。这意味着可能存在无法比较的浮点值。这似乎很难理解,因为浮点数可以被认为是实数的近似值,而实数恰好是一个完全有序的集合。甚至正负无穷的加法也能使实数集保持完全有序。为什么要选择生锈

此限制意味着通用排序/搜索算法只能假定数字的偏序。IEEE754标准似乎提供了一种新的解决方案


NaN在泛型代码中有这么多问题吗

确切地说,你的问题是什么?您是在问NaN是否存在,还是可以通过意外或自愿计算获得?是的,它可以,它可以。当提供的顺序不是总顺序时,需要键的总顺序的数据结构类型会完全崩溃。您甚至不希望一个异常值与它本身不同,因为它会破坏结构的不变量,意味着从此以后任何事情都可能发生。不过,只要没有问题,NaN就不应该被认为是无害的


IEEE 754对普通比较运算符的定义
我不知道total order谓词没有在硬件中实现。@ShaileshKumar首先比较值(<+)的符号,然后,如果值具有相同的符号,则将其他位与表示位上的整数比较指令进行比较。
if (!(x <= MAX)) { // NaN makes this condition true
  error();
}

if (!(x >= MIN)) { // NaN makes this condition true
  error();
}