程序在我求幂时抛出值错误,Python 3
然后它抛出值错误:数学域错误! 为什么它会抛出错误,我知道当负数被提升到分数次幂,分母是偶数时,它会抛出错误,因为它是虚数。当我把这个例子中的x改为正时,它会输出有效的结果,但为什么会抛出错误呢?有人可以从数学的角度解释一下。为什么我不能将负十进制数提升为十进制数?(顺便说一句,它们都是相同的x和幂数只有x是负数) 我猜这只是python认为只有一种方法可以进行幂运算,所以我可能只是通过使x为正然后将结果切换回负来欺骗它。 但如果有其他方法,它会有所帮助 当我从图片中输入x和电源号时,手持式计算器给出有效的输出,并且没有抛出数学错误…来自: 将负数提升为浮点幂将是一个复数。为了说明这一点,您可以将0j添加到指数中,让python知道您想要一个复杂的函数,然后只取实际的部分 下面的代码应该是您想要的程序在我求幂时抛出值错误,Python 3,python,math,valueerror,pow,Python,Math,Valueerror,Pow,然后它抛出值错误:数学域错误! 为什么它会抛出错误,我知道当负数被提升到分数次幂,分母是偶数时,它会抛出错误,因为它是虚数。当我把这个例子中的x改为正时,它会输出有效的结果,但为什么会抛出错误呢?有人可以从数学的角度解释一下。为什么我不能将负十进制数提升为十进制数?(顺便说一句,它们都是相同的x和幂数只有x是负数) 我猜这只是python认为只有一种方法可以进行幂运算,所以我可能只是通过使x为正然后将结果切换回负来欺骗它。 但如果有其他方法,它会有所帮助 当我从图片中输入x和电源号时,手持式计算
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中获得复杂的结果,您需要将至少一个参数topow()
转换为一个复数-要么将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