我正在用 Javascript 编写一个简单的函数,它返回数字数组中最大的数字,并且我有一堆测试数据,但我一辈子都无法弄清楚为什么其中 2 个测试失败了。
我最大的列表函数:
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 < -1 和 5e-324 => 5 x 10 的 -324 次方(技术上应该比 -11 小很多或 - 1)
最佳答案
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE
The Number.MIN_VALUE property represents the smallest positive numeric value representable in JavaScript.
[...]
The MIN_VALUE property is the number closest to 0, not the most negative number, that JavaScript can represent.
5e-325
不是负数。
也许是负无穷大?这在某种程度上取决于您对结果所做的事情。
关于JavaScript 数字 MIN_VALUE 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669998/