我正在尝试toBeCloseTo
在Jest中测试一个浮点数:
expect(value).toBeCloseTo(0.01491, 5);
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的测试时,我看到了这个结果:
Precision: 5-digit
Expected: 0.01491
Received: 0.01491570355
Run Code Online (Sandbox Code Playgroud)
当我将精度设置为时4
,测试通过,但我很困惑.在文档中,它说:
使用
numDigits
控制多少位小数点后检查
所以,我在这里假设我正在比较正确的位数:我有.01491
,有5
数字,所以我希望(双关语!)测试比较那些数字和传递.
我在这里错过了什么?
谢谢
Luk*_*ard 11
Math.abs(expected - actual) < Math.pow(10, -precision) / 2
Run Code Online (Sandbox Code Playgroud)
(奇怪的是,文档列出了第三个参数numDigits
,而不是precision
.)
因此,您的测试失败,因为预期值和实际值之间的差异超过0.5×10 -5:它大约是0.57×10 -5.舍入到五位小数,收到的值0.01491570355
是0.01492
.
据我所知,比较背后的逻辑是,numDigits
如果预期值是将实际值四舍五入到numDigits
小数位,那么实际值将被认为接近预期值到数字内.
归档时间: |
|
查看次数: |
844 次 |
最近记录: |