JavaScript 数字 MIN_VALUE 是如何工作的?

标签 javascript

我正在用 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/

相关文章:

javascript - 在 div 的 slideUp() 事件上切换类

javascript - 不影响 Box2d Javascript 的碰撞检测

javascript - 图片加载不正确

javascript - 如何在ReactJS中调用getDerivedStateFromProps内部的方法?

php - Ajax 登录和 javascript cookie,这安全吗?

javascript - 复制到剪贴板隐藏元素

javascript - 更改 ArrowHelper 类 Threejs 的箭头属性

javascript - codepen 多张产品卡片

JavaScript/Ajax/Json : Sending objects and arrays

javascript - WatiN 无法通过 ID 或名称找到文本框