Search⌘ K
AI Features

Puzzle 6: Explanation

Explore why comparing floating-point numbers directly in Rust can cause errors due to precision limits. Learn to use Clippy for detecting issues and EPSILON or the float_cmp crate for reliable approximate comparisons, ensuring better accuracy in your Rust programs.

Test it out

Press "Run” to see the code’s output.

C++
fn main() {
if 0.1 + 0.2 == 0.3 {
println!("Arithmetic still works.");
} else {
println!("Please reboot the universe.");
}
}

Explanation

You’d expect 0.1+0.2 to equal 0.3. It does, but not in floating-point math. In this case, the floating-point approximations prevent the comparison from succeeding, as if the arithmetic no longer works.

Note: As you might have guessed by now, the floating-point comparison is fraught with errors that may not be so obvious at first glance.

Consider a long-running program that checks if it’s done by examining the floating-point product of some ...