Rails: Testing Your Floating Point Numbers

Apr 17 2009

You’re being a Good Software developer and diligently testing all your code, and lo and behold, you get this result to one of your tests:


1) Failure: ... <1.0> expected but was <1.0>

An annoying problem with floats that might look and for all practical purposes be equal, but internally as stored by the computer are not precisely equal.

You’re probably using:


assert_equal 1.0, a_value_expected_to_be_1.0

Instead, use:


assert_in_delta 1.0, a_value_expected_to_be_1.0, 0.000001

Though, you may also want to ask yourself if you really need to be using floating point numbers; but assuming that you do need them, assert_in_delta will compensate for the annoying fact that floating point numbers might not actually be precisely what you expect them to be.

blog comments powered by Disqus