### What it does Checks for (in-)equality comparisons on floating-point values (apart from zero), except in functions called `*eq*` (which probably implement equality for a type involving floats). ### Why is this bad? Floating point calculations are usually imprecise, so asking if two values are *exactly* equal is asking for trouble. For a good guide on what to do, see [the floating point guide](http://www.floating-point-gui.de/errors/comparison). ### Example ``` let x = 1.2331f64; let y = 1.2332f64; if y == 1.23f64 { } if y != x {} // where both are floats ``` Use instead: ``` let error_margin = f64::EPSILON; // Use an epsilon for comparison // Or, if Rust <= 1.42, use `std::f64::EPSILON` constant instead. // let error_margin = std::f64::EPSILON; if (y - 1.23f64).abs() < error_margin { } if (y - x).abs() > error_margin { } ```