Javascript基本数学运算有时不计算

时间:2018-03-30 03:37:52

标签: javascript math

我在javascript的一个实现中遇到了一个非常有趣的问题,我正在编码。我有一个名为add()的函数,如果传递的对象是我的自定义Matrix类的实例,则执行矩阵添加,但在代码中的不同点,相同的函数不计算结果。功能如下:

add(n) {
    if(n instanceof Matrix) {
        console.log('sum aaa')
        for(let i = 0; i < this.rows; i++) {
            for(let j = 0; j < this.cols; j++) {

                // I broke down the formula to see each output independently
                let a = this.data[i][j]
                let b = n.data[i][j]
                let result = a + b
                this.data[i][j] = result
                console.log('a = ' + a + ' b = ' + b + ' result = ' + result)

                // this is what I had
                //this.data[i][j] += n.data[i][j]
            }
        }
    } else {
        console.log('sum bbb')
        for(let i = 0; i < this.rows; i++) {
            for(let j = 0; j < this.cols; j++) {
                this.data[i][j] += n
            }
        }
    }

}

以下是我称之为同一函数的两次不同时间的输出:

results computed correctly

results not computed at all

注意在第一张图像中如何计算所需的输出,但在第二张图像中根本不计算它。

这个函数是从我正在构建的神经网络的方法中调用youtube教程。起初我认为问题可能是我调用函数的地方,但运行不同场景和数据集的测试一切都按预期计算,问题实际上似乎是在add()函数中。

我在这里遗漏了什么吗?为什么会发生这种情况?老实说我不知道​​。任何帮助都将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

正在进行添加。请注意,在第二个图像中,所有b值都有一个&#34; e-28&#34;最后,这是指数表示法意味着b值非常小,基本上为0。 正在进行添加,b值对第二个示例中的输出没有明显影响。