当我求幂时程序抛出值错误,Python 3
Program throws value error when I exponentiate, Python 3
from math import pow
x = -0.0806
power_number = 0.0806
rezultat = pow(float(x), float(power_number))
Picture with info
之后抛出 ValueError: 数学域错误!
为什么会抛出错误,我知道当负数被提升为分数次方并且分母为偶数时它会抛出错误,因为它是虚数。当我在此示例中将 x 更改为正值时,它会输出有效结果,但为什么会抛出错误,有人可以从数学角度解释一下。为什么我不能将负十进制数提高到十进制数? (顺便说一下,它们都是相同的 x 和 power_number 只有 x 是负数)
我猜这只是 python 认为只有一种方法可以进行求幂,所以也许我只是 通过使 x 为正然后将结果切换回负数来欺骗它。
但是,如果有其他方法,它会有所帮助。
当我从图片中输入 x 和 power_number 时,手持计算器给出了有效的输出并且没有抛出数学错误...
发件人:negative pow in python
负数的浮点次方将是复数。为了解决这个问题,您可以做的是将 0j 添加到指数中,让 python 知道您想要一个复数,然后只取实部。
下面的代码应该可以满足您的需求。
x = -0.0806
power_number = 0.0806
rezultat = pow(float(x), float(power_number) + 0j).real
from math import pow
x = -0.0806
power_number = 0.0806
rezultat = pow(float(x), float(power_number))
Picture with info
之后抛出 ValueError: 数学域错误! 为什么会抛出错误,我知道当负数被提升为分数次方并且分母为偶数时它会抛出错误,因为它是虚数。当我在此示例中将 x 更改为正值时,它会输出有效结果,但为什么会抛出错误,有人可以从数学角度解释一下。为什么我不能将负十进制数提高到十进制数? (顺便说一下,它们都是相同的 x 和 power_number 只有 x 是负数)
我猜这只是 python 认为只有一种方法可以进行求幂,所以也许我只是 通过使 x 为正然后将结果切换回负数来欺骗它。 但是,如果有其他方法,它会有所帮助。
当我从图片中输入 x 和 power_number 时,手持计算器给出了有效的输出并且没有抛出数学错误...
发件人:negative pow in python
负数的浮点次方将是复数。为了解决这个问题,您可以做的是将 0j 添加到指数中,让 python 知道您想要一个复数,然后只取实部。
下面的代码应该可以满足您的需求。
x = -0.0806
power_number = 0.0806
rezultat = pow(float(x), float(power_number) + 0j).real