关于IEEE 754规定1的NaN次幂为1的原因及Java、JavaScript未遵循该标准的技术问询
关于IEEE 754规定1的NaN次幂为1的原因及Java、JavaScript未遵循该标准的技术问询
先跟大家理一理相关背景:
IEEE 754标准明确规定,1^n的结果恒为1,不管n取什么值——哪怕n是NaN也不例外。我没花钱去购买官方标准文档确认这点,但有学术资料引用了2008版IEEE 754标准的第44页来佐证这个规则。
目前大部分主流编程语言都遵循了这个规定:比如Python、C、C#、PHP、Go还有Rust,在这些语言里计算1 ** NaN(或者对应语法的幂运算)都会得到1。不过有两个例外——Java和JavaScript,它们计算1^NaN的时候返回的都是NaN。
接下来有两个核心问题想请教各位:
- 为什么IEEE 754要在NaN传播的通用规则里设置这么一个特殊例外?
- 为什么Java和JavaScript没有遵循这个标准规定?
备注:内容来源于stack exchange,提问作者Isaac King
相关产品推荐
相关产品推荐

