How can I test floating-point equality using chai?
The within
assertion can be used to check whether a floating-point number is close to its intended result:
expect(percentage).to.be.within(66.666, 66.667);
I was looking for this too, and apart from this question, I also found this discussion regarding a feature request that led to the addition of closeTo
. With that you can specify a value and a +/- delta, so basically it lets you specify the precision with which to check the result.
percentage.should.be.closeTo(6.666, 0.001);
or
// `closeTo` is an alias for the arguably better name `approximately`
percentage.should.be.approximately(6.666, 0.001);
or
expect(percentage).to.be.closeTo(6.666, 0.001)
It's not perfect of course, because this will approve any number from 6.665 to 6.667.