数组中的平方值 (JavaScript) 加上浮点误差

Square values in an array (JavaScript) plus floating point error

我正在关注第一个和第二个答案here。我已经从值中减去平均值然后 console.log() 它来检查它。然后我使用 for-loop 遍历每个值,如:

for (var i = 0; i < myArray.length; i++) {
    Math.pow(squaredArray[i], 2);
};

我现在也遇到了一个浮点错误,当我添加 for-loop 来计算值的平方时看起来像这样。

我做错了什么?

Fiddle here.

您似乎在尝试遍历 myArray 中的值,对它们求平方,然后将它们存储在 squaredArray 中。

for (var i = 0; i < myArray.length; i++) {
    squaredArray[i] = Math.pow(myArray[i], 2);
};

"floating point error" 是因为您试图这样做:

Math.pow(undefined, 2);

如果您不确定输入,可以通过异常处理来保护:

for (var i = 0; i < myArray.length; i++) {
    try {
        squaredArray[i] = Math.pow(squaredArray[i], 2);
    }
    catch (e) {
        console.log('input [' + i + '] ' + squareArray[i] + ' caused an exception!');
        console.log(e);
    }
};

此外,您的原始代码是求平方但没有对其进行任何处理,所以我冒昧地将结果赋值给它自己。