在 Rust 中,是否有一个实现
f32
的 f64
/ Eq
版本?f32
/ f64
未实施 Eq
的唯一原因是 NaN != NaN
。NaN == NaN
,这将非常有用,因为我经常假设 a == a
始终为真。NaN
,这样就不存在可能与其自身不相等的 NaN
。理想情况下,有一种方法可以通过使用后缀(类似于
2.3_f32
)来使用该类型,但我认为这是不可能的。
从 Rust 1.62.0 开始,您可以使用 total_cmp()
和
f32
的 f64
方法。它们本身不是一个类型,但如果您愿意,您可以在它们之上构建一个类型。
ordered-float
板条箱。它提供 NotNan
和 OrderedFloat
类型,每种类型都与您描述的一种行为匹配。