无法计算JAVA中的负基值

时间:2017-09-18 03:19:37

标签: java android math computation

在我的Android应用程序中,我试图评估表达式:( - 2 ^(x))但似乎无法看到 从JAVA库中获取Math.pow()方法。我能够评估(2 ^(x))但不能评估负基数。 这是一个Logs。 y值全部以NaN形式返回。 enter image description here

评估我使用以下语句:

double result = Math.pow(x,exponent);
result = coefficient * result;

我不知道这似乎是什么问题。也许是建立负面基础的方式。

感谢您的任何建议     return multiplier * Math.pow(base,result);

2 个答案:

答案 0 :(得分:5)

假设您尝试计算(-2)幂x,其中x是图片中显示的x值之一:除非{{ {1}}是一个整数。原因是答案不是真实的数字。 (例如,什么是(-1)^ 0.5?那是-1的平方根,它是x,是一个虚数,而不是实数。)i值图像中显示的都是非整数(似乎有些非常接近整数,但仍然不是 - 在最后一个小数位上有一个非零值)。因此,结果都是x

这在NaN的javadoc中是明确的:

  

如果第一个参数是有限且小于零:

     

如果第二个   参数是有限的偶数,结果等于结果   将第一个论证的绝对值提高到幂的幂   第二个论点

     

如果第二个参数是有限的奇数,   结果等于提高结果的负面结果   第二个参数的绝对值   论证

     

如果第二个参数是有限的而不是整数,那么   结果是NaN。

如果您所做的事情不是(-2)^ x,那么您的问题就会令人困惑,需要澄清。

答案 1 :(得分:1)

具有分数指数的负基是具有实部和虚部的复数。 Math.pow函数不能返回复数;双返回值不能表示或引用复杂值。

问题的发生是因为所有语言都代表浮点数。你不能再使用基数10来表示完全相同的二进制数0.1。