Javascript 当a是负数,b是非整数时,为什么Math.pow(a,b)是NaN?

Javascript 当a是负数,b是非整数时,为什么Math.pow(a,b)是NaN?,javascript,node.js,Javascript,Node.js,我观察到以下Javascript行为: > Math.pow(4, 2) 16 > Math.pow(4, 2.1) 18.37917367995256 > Math.pow(4, 0.5) 2 > Math.pow(-4, 2) 16 > Math.pow(-4, 2.1) NaN > Math.pow(-4, 0.5) NaN 为什么给一个负数和一个非整数但有理数,会使Math.pow返回NaN 例如,为什么Math.pow(4,0.5)不是NaN,而是

我观察到以下Javascript行为:

> Math.pow(4, 2)
16
> Math.pow(4, 2.1)
18.37917367995256
> Math.pow(4, 0.5)
2
> Math.pow(-4, 2)
16
> Math.pow(-4, 2.1)
NaN
> Math.pow(-4, 0.5)
NaN
为什么给一个负数和一个非整数但有理数,会使
Math.pow
返回
NaN

例如,为什么
Math.pow(4,0.5)
不是
NaN
,而是
Math.pow(4,-0.5)
NaN

)数字警报

我也得到了一个疯狂的结果。所以我这里有相同的逻辑在不同的编程语言中

我的感觉是,当计算幂时,得到的数字是-1的根,这是一个虚数。我猜这些程序不能处理虚数


结果如下所示:

C#

Java

JavaScript

Math.pow(-4, 2.1);      // Returns NaN

因为你试图计算一个不真实的数字。例如,没有实数是-4到0.5的幂的解。于是出现了的世界

当你看到似乎是这样说的时候,你会得到最好的答案

返回将x提高到y的幂的结果的依赖于实现的近似值

15.8.2.13功率(x,y)#Ⓣ Ⓡ

  • 如果y为NaN,则结果为NaN
  • 如果y为+0,则结果为1,即使x为NaN
  • 如果y是−0,结果为1,即使x为NaN
  • 如果x为NaN,y为非零,则结果为NaN
  • 如果abs(x)>1且y为+∞, 结果是+∞.
  • 如果abs(x)>1且y为−∞, 结果是+0
  • 如果abs(x)==1且y为+∞, 结果是NaN
  • 如果abs(x)==1且y为−∞, 结果是NaN

  • 如果abs(x)这是由于数学。您的值将是一个不受支持的虚数(复数)。:)

    Math.pow(-4,0.5)
    应该是
    2i,不是吗?结果是一个。这就是为什么。我想知道为什么有人会对一个他们不知道会发生什么的结果感到惊讶。换句话说:如果你不知道复数,你希望得到什么回报?@IngoBürk我想知道为什么有些人对任何事情都不感到惊讶…:-)没错!非常感谢。
    
    Math.pow(-4, 2.1);      // Returns NaN
    
    Math.pow(-4, 2.1);      // Returns NaN