5

IEEE 754-2008部分“9.2.1 特殊值”中提到

pow(+1, y)适用1于任何y(甚至是安静的NaN

对于不阅读整个文档 Wikipedia 提供了快捷方式

IEEE 754 标准的 2008 版本表示pow(1, qNaN)并且 pow(qNaN, 0)都应该返回1,因为它们返回1使用的任何其他内容而不是 quiet NaN

Math.pow(1, NaN)那么为什么NaN在 JavaScript 中呢?不符合标准吗?

4

3 回答 3

5

这是因为ECMAscript 规范似乎是这么说的。

pow (x, y)

返回x对乘方结果的依赖于实现的近似值y

  • 如果yNaN,结果是NaN
  • ...其他限制...
于 2013-02-18T13:53:05.403 回答
2

根据Wikipedia 文章,该pow定义于 2008 年添加到 IEEE 754。它也是可选的。

另一方面,如果第二个参数至少是从 1997 年开始,则 ECMAScriptpow已被定义为返回,该年标准的第 15.8.2.13 节。NaNNaN

似乎 ECMA 委员会选择保持与十多年的 JavaScript 的兼容性,而不是遵守 IEEE 的特殊新建议。

于 2013-02-18T15:27:32.137 回答
1

这是因为 NaN 是“非数字”,某种数学上的未定义。在数学 1 中,未定义的幂也是未定义的。

于 2013-02-18T13:54:58.723 回答