Ion*_*zău 5 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
Run Code Online (Sandbox Code Playgroud)
为什么给出一个负数和一个非整数但有理数的数字会让人Math.pow回归NaN?
例如,为什么Math.pow(4, 0.5)是不是 NaN,但Math.pow(4, -0.5) 就是 NaN?
我也有一个疯狂的结果.所以我在这里有不同编程语言中的相同逻辑.
我的感觉是,当计算功率时,得到的数字是-1的根,这是一个虚数.这些程序无法处理虚数是我的猜测.
该结果如下:
C#
Math.Pow(-1.1, -1.1); // Returns NaN
Run Code Online (Sandbox Code Playgroud)
Java 输出
Math.pow(-4, 2.1); // Returns NaN
Run Code Online (Sandbox Code Playgroud)
JavaScript的
Math.pow(-4, 2.1); // Returns NaN
Run Code Online (Sandbox Code Playgroud)
因为你试图计算一个不真实的数字。例如,没有实数是 -4 的 0.5 次方的解。于是虚数的世界就出现了。
\n\n当您看到ECMAscript 规范似乎是这么说时,您将得到最好的答案。
\n\n返回 x 的 y 次方结果的依赖于实现的近似值。
\n\n\n\n15.8.2.13 pow(x,y)#\xe2\x93\x89\xe2\x93\x87
\n\n\n
\n\n- 如果 y 为 NaN,则结果为 NaN。
\n- 如果 y 为 +0,即使 x 为 NaN,结果也为 1。
\n- 如果 y 为 \xe2\x88\x920,即使 x 为 NaN,结果也为 1。
\n- 如果 x 为 NaN 并且 y 非零,则结果为 NaN。
\n- 如果abs(x)>1且y为+\xe2\x88\x9e,则结果为+\xe2\x88\x9e。
\n- 如果abs(x)>1且y为\xe2\x88\x92\xe2\x88\x9e,则结果为+0。
\n- 如果 abs(x)==1 且 y 为 +\xe2\x88\x9e,则结果为 NaN。
\n- 如果 abs(x)==1 且 y 为 \xe2\x88\x92\xe2\x88\x9e,则结果为 NaN。
\n- 如果abs(x)<1且y为+\xe2\x88\x9e,则结果为+0。
\n- 如果 abs(x)<1 且 y 为 \xe2\x88\x92\xe2\x88\x9e,则结果为 +\xe2\x88\x9e。
\n- 如果 x < 0 且 x 是有限的且 y 是有限的且 y 不是整数,则结果为 NaN。
\n......................
\n
| 归档时间: |
|
| 查看次数: |
5358 次 |
| 最近记录: |