Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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
程序在我求幂时抛出值错误,Python 3_Python_Math_Valueerror_Pow - Fatal编程技术网

程序在我求幂时抛出值错误,Python 3

程序在我求幂时抛出值错误,Python 3,python,math,valueerror,pow,Python,Math,Valueerror,Pow,然后它抛出值错误:数学域错误! 为什么它会抛出错误,我知道当负数被提升到分数次幂,分母是偶数时,它会抛出错误,因为它是虚数。当我把这个例子中的x改为正时,它会输出有效的结果,但为什么会抛出错误呢?有人可以从数学的角度解释一下。为什么我不能将负十进制数提升为十进制数?(顺便说一句,它们都是相同的x和幂数只有x是负数) 我猜这只是python认为只有一种方法可以进行幂运算,所以我可能只是通过使x为正然后将结果切换回负来欺骗它。 但如果有其他方法,它会有所帮助 当我从图片中输入x和电源号时,手持式计算

然后它抛出值错误:数学域错误! 为什么它会抛出错误,我知道当负数被提升到分数次幂,分母是偶数时,它会抛出错误,因为它是虚数。当我把这个例子中的x改为正时,它会输出有效的结果,但为什么会抛出错误呢?有人可以从数学的角度解释一下。为什么我不能将负十进制数提升为十进制数?(顺便说一句,它们都是相同的x幂数只有x是负数)

我猜这只是python认为只有一种方法可以进行幂运算,所以我可能只是通过使x为正然后将结果切换回负来欺骗它。 但如果有其他方法,它会有所帮助

当我从图片中输入x和电源号时,手持式计算器给出有效的输出,并且没有抛出数学错误…

来自:

将负数提升为浮点幂将是一个复数。为了说明这一点,您可以将0j添加到指数中,让python知道您想要一个复杂的函数,然后只取实际的部分

下面的代码应该是您想要的

from math import pow
    
x = -0.0806
power_number = 0.0806
    
rezultat = pow(float(x), float(power_number))

FWIW,对我有用…你的手持计算器可能将你的输入解释为
-(0.0806**0.0806)
,而不是
(-0.0806)**0.0806
——在实数中确实没有答案。如果您想在Python中获得复杂的结果,您需要将至少一个参数to
pow()
转换为一个复数-要么将
0j
添加到其中一个参数,要么将
complex()
应用到该参数。可以使用内置pow。如果从math导入pow,则会引发此错误。你能澄清这个问题吗?你会导入吗?@jasonharper在Python3.9.1中,这只是工作,没有
complex()
0j
修改@stoopidhooman应该指定他使用的python版本。在一些在线IDE中的Python2.7.x上,我得到了一个稍有不同的
ValueError:负数不能提高到分数幂
x = -0.0806
power_number = 0.0806

rezultat = pow(float(x), float(power_number) + 0j).real