我有一个方程,其中一个正方形,其根= 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正在搞砸我。
任何人都可以告诉我为什么和/或如何解决它?
答案 0 :(得分:5)
这是根据ECMAScript规范部分15.8.2.13:
pow (x, y)
- 如果
x < 0
和x
是有限的且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);
哪个不会导致错误