Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在JAVA中计算负基数的值_Java_Android_Math_Computation - Fatal编程技术网

无法在JAVA中计算负基数的值

无法在JAVA中计算负基数的值,java,android,math,computation,Java,Android,Math,Computation,在我的Android应用程序中,我试图计算表达式:(-2^(x)),但似乎无法计算 从JAVA库中获取Math.pow()方法。我能够计算(2^(x)),但不能计算负基数的另一个。 下面是日志。y值都返回为NaN。 为了进行评估,我使用以下语句: double result = Math.pow(x,exponent); result = coefficient * result; 我不知道是什么问题。也许是建立负基数的方式 谢谢你的建议 返回乘数*Math.pow(基、结果) 假设您正试图

在我的Android应用程序中,我试图计算表达式:(-2^(x)),但似乎无法计算 从JAVA库中获取Math.pow()方法。我能够计算(2^(x)),但不能计算负基数的另一个。 下面是日志。y值都返回为NaN。

为了进行评估,我使用以下语句:

double result = Math.pow(x,exponent);
result = coefficient * result;
我不知道是什么问题。也许是建立负基数的方式

谢谢你的建议
返回乘数*Math.pow(基、结果)

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

这在javadoc for
Math.pow中是明确的:

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

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

如果第二个参数是有限奇数整数, 该结果等于提高该值的结果的负数 第一个参数对第二个参数幂的绝对值 论据

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


如果你所做的不是(-2)^x,那么你的问题很混乱,需要澄清。

带分数指数的负基是一个带实部和虚部的复数。Math.pow函数未配置为返回复数;双返回值不能表示或引用复杂值


出现这个问题是因为所有语言都表示浮点数。不能将0.1精确地表示为二进制数,正如不能使用基数10表示1/3一样

Post错误日志,而不是带负基的image
Math.pow
。你能给我们一个可复制的例子吗?@TimBiegeleisen你所说的可复制的例子是什么意思?如果不适合你,只需做(2^x),最后将结果乘以(-1)。除非你说的是(-2)^x。即使是这样,只需检查x是否为偶数或奇数,并乘以(-1),我认为Math.pow使用-ve值。错误不存在于-ve值中。我正在执行此操作:-1*2^x,人类会识别此错误,但Math.pow()不会。正如您所说,由于根的索引为偶数,非整数指数将返回NaN。我只需要重写表达式,或者强制代码识别x的整数值,并计算这些值,而不是其他值@AJBT这是必须的,尽管OP没有很好地解释事情+1。我怀疑你处理
x
的方式。您有许多看起来像
-12.90000000000003
的值。这表明您正试图将
x
增加0.1,但这样做会导致舍入错误,因此当
x
应该是整数时,它仍然不是整数。使用
double
时可能会发生这种情况,因为值0.1不能准确表示为
double
。我的建议是:使用一个每次递增1的整数,然后除以10,而不是使用0.1作为增量。这样,当
x
是一个整数时,它将是精确的。是的,我将x增加0.05或0.1,我将尝试你的提示,但很难更改超过10000行的android代码。猜猜,下次吧@ajb