使用第二个参数作为十进制值在Math.pow操作中获取NaN

时间:2013-12-17 14:07:07

标签: javascript

我有一个方程,其中一个正方形,其根= 5:

http://www.jonataspiazzi.xpg.com.br/eq.png

我需要在javascript中编写这个等式:

var y = Math.pow(-x, 1 / 5); // or Math.pow(-x, 0.2);

到目前为止,这么好。 但是当我尝试使用值x = 400

var y = Math.pow(-400, 0.2);

我离开了NaN,但这个等式返回一个真值 如果我使用我的calc或谷歌或任何其他计算我得到类似的东西:

(-400) ^ 0.2 = -3.31445401734

这是正确的。但javascript正在搞砸我。

任何人都可以告诉我为什么和/或如何解决它?

2 个答案:

答案 0 :(得分:5)

这是根据ECMAScript规范部分15.8.2.13

  

pow (x, y)

     
      
  • 如果x < 0x是有限的且y是有限的且y不是整数,   结果是NaN
  •   

在我们的案例中,x是有限的且小于0,而y是有限的浮点数。

参考: http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.13

答案 1 :(得分:1)

您可以使用

这一事实
y = (-x) ^ (1/5)
  = (-1) ^ (1/5) * x ^ (1/5)
  = -1 * x ^ (1/5)

将问题简化为

-Math.pow(400, 0.2);

哪个不会导致错误