【问题标题】:Square values in an array (JavaScript) plus floating point error数组中的平方值(JavaScript)加上浮点错误
【发布时间】:2015-10-23 14:15:41
【问题描述】:

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

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

当我添加 for-loop 以平方值时,我现在也遇到了一个浮点错误。

我做错了什么?

Fiddle here.

【问题讨论】:

  • 你的浮点错误是什么?您是否在做 y = Math.sqrt(z); x = Math.pow(y, 2); 并发现 x != z 有时?
  • x = Math.pow(myArray[i] - mean) 发现偶有0.000000004 错误。
  • 这听起来不像是浮点错误,它只是听起来像浮点运算的工作原理(众所周知,小值不精确)。

标签: javascript arrays for-loop floating-point square


【解决方案1】:

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

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

“浮点错误”是因为您试图这样做:

Math.pow(undefined, 2);

【讨论】:

    【解决方案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);
        }
    };
    

    另外,你的原始代码是平方的,但没有做任何事情,所以我冒昧地将结果分配给它自己。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多