JavaScript编号MIN_VALUE如何工作?

时间:2014-09-04 15:58:14

标签: javascript

我在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小很多)

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不是负数。

可能是负无穷大?这取决于你对结果做了什么。