我在Javascript中编写一个简单的函数,它返回数字数组中最大的函数,但我有一堆测试数据,但我不能在我的生活中弄清楚为什么有两个测试失败了。
我最大的列表功能:
function largestInList(list) {
var largest = Number.MIN_VALUE;
for (var i = 0; i < list.length; i++) {
if (largest <= list[i])
largest = list[i];
}
return largest;
}
我的测试
it("Return the largest in a list", function() {
expect(largestInList).toBeDefined();
expect(largestInList([])).toEqual(Number.MIN_VALUE);
expect(largestInList([-11])).toEqual(-11);
expect(largestInList([-1, -3])).toEqual(-1);
expect(largestInList([3, -1])).toEqual(3);
expect(largestInList([3, -1, 8])).toEqual(8);
expect(largestInList([4, 9, -1, 9, 8])).toEqual(9);
expect(largestInList([3, 61, 8])).toEqual(61);
expect(largestInList([3, 61, 8, 333, -1])).toEqual(333);
});
这两行失败了,但我无法弄明白为什么?
expect(largestInList([-11])).toEqual(-11);
expect(largestInList([-1, -3])).toEqual(-1);
错误:
Expected 5e-324 to equal -11
Expected 5e-324 to equal -1
我不是数学家,但如果我的假设是正确的-11&lt; -1和5e-324 =&gt; 5 x 10上升到-324的功率(技术上应该比-11或-1小很多)
答案 0 :(得分:1)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE
Number.MIN_VALUE属性表示JavaScript中可表示的最小正数值。
[...]
MIN_VALUE属性是最接近0的数字,而不是JavaScript可以表示的最负数。
5e-325
不是负数。
可能是负无穷大?这取决于你对结果做了什么。