My tests fail when using floating point numbers f64 due to precision errors.
use std::ops::Sub;
#[derive(Debug, PartialEq, Clone, Copy)]
struct Audio {
    amp: f64,
}
impl Sub for Audio {
    type Output = Self;
    fn sub(self, other: Self) -> Self::Output {
        Self {
            amp: self.amp - other.amp,
        }
    }
}
#[test]
fn subtract_audio() {
    let audio1 = Audio { amp: 0.9 };
    let audio2 = Audio { amp: 0.3 };
    assert_eq!(audio1 - audio2, Audio { amp: 0.6 });
    assert_ne!(audio1 - audio2, Audio { amp: 1.2 });
    assert_ne!(audio1 - audio2, Audio { amp: 0.3 });
}
I get the following error:
---- subtract_audio stdout ----
thread 'subtract_audio' panicked at 'assertion failed: `(left == right)`
  left: `Audio { amp: 0.6000000000000001 }`,
 right: `Audio { amp: 0.6 }`', src/lib.rs:23:5
How to test for structs with floating numbers like f64 ?
 
     
    