在IEEE 754-2008部分"9.2.1 Special values"中提到了
任何pow(+1, y)
1
y
(即使是安静的NaN
)
如果不阅读整篇文档,维基百科会提供shortcut:
2008版IEEE 754标准说
pow(1, qNaN)
和pow(qNaN, 0)
应返回1
,因为它们会返回1
其他内容 用而不是安静NaN
。
为什么JavaScript中的Math.pow(1, NaN)
为NaN
?它不符合标准吗?
答案 0 :(得分:5)
这是因为the ECMAscript specification似乎这么说。
pow(x,y)
返回将
x
提升为幂y
的结果的依赖于实现的近似值。
- 如果
y
为NaN
,则结果为NaN
。- ......其他限制......
答案 1 :(得分:2)
根据the Wikipedia article,pow
定义在2008年被添加到IEEE 754.它也是可选的。
另一方面,ECMAScript的pow
已被定义为返回NaN
,如果第二个参数自NaN
至少自1997年以来that year's standard的第15.8.2.13节中
似乎ECMA委员会选择保持与十多年的JavaScript兼容,而不是遵守IEEE特有的新建议。
答案 2 :(得分:1)
这是因为NaN是“非数字”,某种数学未定义。在数学1中,未定义的力量也是未定义的。