我一直认为 1 的任何幂等于 1,但Math.pow(1, Infinity)
返回 NaN。为什么不是1?
4 回答
这更像是一个数学问题而不是 Javascript 问题,因此您可以使用以下数学解释 ( http://mathforum.org/library/drmath/view/53372.html ):
当你有类似“无穷大”的东西时,你必须意识到它不是一个数字。通常你的意思是某种限制过程。因此,如果您有“1^infinity”,那么您真正拥有的是某种限制:底数并不是真正的 1,而是可能越来越接近 1,而指数可能会越来越大,例如 (x+ 1)^(1/x) 为 x->0+。
问题是,哪个发生得更快,基数接近 1 还是指数变大?要找出答案,让我们致电:
L = lim x->0 of (x+1)^(1/x)
然后:
ln L = lim x->0 of (1/x) ln (x+1) = lim x->0 of ln(x+1) / x
那是什么?因为 x->0 它是 0/0 形式,所以取顶部和底部的导数。然后我们得到 lim x->0 of 1/(x+1) / 1,这 = 1。所以 ln L = 1,并且 L = e。凉爽的!
这是真的吗?尝试插入一个很大的 x 值。或者将此限制视为 e 定义的变体。不管怎样,这是真的。极限是 1^infinity 形式,但在这种情况下它是 e,而不是 1。尝试在指数中使用 (2/x) 或 (1/x^2) 或 1/(sqrt 重复工作(x)),看看这如何改变答案。
这就是我们称之为不确定的原因——所有这些不同版本的极限都接近 1^infinity,但最终答案可以是任何数字,例如 1、或无穷大或未定义。您需要做更多的工作来确定答案,因此 1^infinity 本身尚未确定。换句话说,1 只是 1^infinity 的答案之一。
“不确定”的答案不是数字。
IEEE 754-2008 定义:
1^(+-)Inf = +1
您使用的语言不符合标准。