如何使用chai测试浮点相等?

时间:2015-09-24 20:28:58

标签: javascript floating-point precision chai

我们正在使用Chai's BDD API来编写单元测试。

我们如何断言浮点平等?

例如,如果我尝试使此断言检查66⅔%的返回值:

expect(percentage).to.equal(2 / 3 * 100.0);

我失败了:

AssertionError: expected 66.66666666666667 to equal 66.66666666666666
Expected :66.66666666666666
Actual   :66.66666666666667

2 个答案:

答案 0 :(得分:29)

我也在寻找这个问题,除了这个问题之外,我还发现this discussion关于导致添加closeTo的功能请求。有了它,您可以指定一个值和+/- delta,所以基本上它允许您指定检查结果的精度。

percentage.should.be.closeTo(6.666, 0.001);

expect(percentage).to.be.closeTo(6.666, 0.001)

当然不完美,因为这将批准从6.665到6.667的任何数字。

答案 1 :(得分:6)

within断言可用于检查浮点数是否接近其预期结果:

expect(percentage).to.be.within(66.666, 66.667);