数字
- 如i32、f32、u32
- 数字有一个
is_nan方法判断是否是一个数字 - 溢出
浮点数¶
- 比较和浮点数
-
浮点数不能直接对比,因为相减时可能多了0.00000000000000004,相加时少了0.00000000000000002。
- 仅实现ParitalEq、ParitalOrd,无法用于如HashMap等需要Eq的
相等-标准库¶
// epsilon,如1e-10,或者标准库的f32::EPSILON或者f64::EPSILON(浮点数的机器精度)
fn float_equal(a: f64, b: f64, epsilon: f64) -> bool {
(a - b).abs() < epsilon
}
其他crate¶
- float-cmp的approx_eq
- approx的abs_diff_eq
- ordered-float:专门实现了一个结构体来实现Eq、Ord、Hash接口
Range¶
- 如:
for i in 1..=5