以下JavaScript异常使我措手不及:
console.log(1 - 0.1 - 0.1 === 1 - 0.2); // true
console.log(1 - 0.2 - 0.2 === 1 - 0.4); // false
当我开始使用Mocha测试框架测试一些数学运算时。
摩卡咖啡中是否存在比较小数位数可忽略的数字的标准方法?
我正在寻找一种解决方案,可以将比较精度指定为百分比。
更新
所以基本上我需要实现这样的功能:
/**
* @param a
* @param b
* @param accuracy - precision percentage.
* @returns
* 0, if the difference is within the accuracy.
* -1, if a < b
* 1, if a > b
*/
function compare(a, b, accuracy) {
}
复杂度是accuracy
是百分比值。
示例:
compare(1.001, 1.002, 0.1) => 0
compare(12345, 12346, 0.1) => 0
答案 0 :(得分:0)
Mocha是一个测试运行器/框架。它只是在乎测试中是否会引发错误。断言/检查属于断言库– Mocha不会为它提供服务或为其提供功能。您可以自由地在Mocha中使用任何断言库,例如chai或Surprised。在此处查看整个列表:https://github.com/mochajs/mocha/wiki
根据您的评论,您可能会遇到类似这样的情况:
function compare(a, b, accuracy) {
const biggest = Math.max(Math.abs(a), Math.abs(b))
const epsilon = biggest * accuracy
if (Math.abs(a - b) > epsilon) {
throw(new Error("message"))
}
}