diff --git a/clippy_lints/src/excessive_precision.rs b/clippy_lints/src/excessive_precision.rs index 9f8224cd2..99668880f 100644 --- a/clippy_lints/src/excessive_precision.rs +++ b/clippy_lints/src/excessive_precision.rs @@ -136,10 +136,10 @@ fn max_digits(fty: FloatTy) -> u32 { /// Counts the digits excluding leading zeros fn count_digits(s: &str) -> usize { - // Note that s does not contain the f32/64 suffix + // Note that s does not contain the f32/64 suffix, and underscores have been stripped s.chars() - .filter(|c| *c != '-' || *c != '.') - .take_while(|c| *c != 'e' || *c != 'E') + .filter(|c| *c != '-' && *c != '.') + .take_while(|c| *c != 'e' && *c != 'E') .fold(0, |count, c| { // leading zeros if c == '0' && count == 0 { diff --git a/tests/ui/excessive_precision.rs b/tests/ui/excessive_precision.rs index ab0412a16..abfdb0b3d 100644 --- a/tests/ui/excessive_precision.rs +++ b/tests/ui/excessive_precision.rs @@ -67,4 +67,7 @@ fn main() { // Inferred type let good_inferred: f32 = 1f32 * 1_000_000_000.; + + // issue #2840 + let num = 0.000_000_000_01e-10f64; }