无法在JAVA中计算负基数的值
在我的Android应用程序中,我试图计算表达式:(-2^(x)),但似乎无法计算 从JAVA库中获取Math.pow()方法。我能够计算(2^(x)),但不能计算负基数的另一个。 下面是日志。y值都返回为NaN。 为了进行评估,我使用以下语句:无法在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(基、结果) 假设您正试图
double result = Math.pow(x,exponent);
result = coefficient * result;
我不知道是什么问题。也许是建立负基数的方式
谢谢你的建议
返回乘数*Math.pow(基、结果) 假设您正试图计算(-2)的幂
x
,其中x
是图像中显示的x
值之一:除非x
是整数,否则这不起作用。原因是答案不是一个真实的数字。(例如,什么是(-1)^0.5?这是-1的平方根,它是i
,一个虚数,而不是实数。)图像中显示的x
值都是非整数(似乎有些值非常接近整数,但仍然不是-,小数点后一位有一个非零)。因此,结果都显示为NaN
这在javadoc forMath.pow中是明确的:
如果第一个参数是有限的且小于零:
如果第二个
参数为有限偶数整数,结果等于结果
将第一个参数的绝对值提高到
第二个论点
如果第二个参数是有限奇数整数,
该结果等于提高该值的结果的负数
第一个参数对第二个参数幂的绝对值
论据
如果第二个参数是有限的而不是整数,则
结果是NaN
如果你所做的不是(-2)^x,那么你的问题很混乱,需要澄清。带分数指数的负基是一个带实部和虚部的复数。Math.pow函数未配置为返回复数;双返回值不能表示或引用复杂值
出现这个问题是因为所有语言都表示浮点数。不能将0.1精确地表示为二进制数,正如不能使用基数10表示1/3一样 Post错误日志,而不是带负基的imageMath.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