在我的Android应用程序中,我试图评估表达式:( - 2 ^(x))但似乎无法看到
从JAVA库中获取Math.pow()方法。我能够评估(2 ^(x))但不能评估负基数。
这是一个Logs。 y值全部以NaN形式返回。
评估我使用以下语句:
double result = Math.pow(x,exponent);
result = coefficient * result;
我不知道这似乎是什么问题。也许是建立负面基础的方式。
感谢您的任何建议 return multiplier * Math.pow(base,result);
答案 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。