跳转至

数字

  • 如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