如何解决当我取幂时,程序抛出值错误,Python 3
from math import pow
x = -0.0806
power_number = 0.0806
rezultat = pow(float(x),float(power_number))
之后它会抛出ValueError: math domain error! 为什么它会抛出错误,我知道当负数被提升到分数幂并且分母是偶数时它会抛出错误,因为它是虚数。当我在此示例中将 x 更改为正时,它会输出有效结果,但有人可以从数学角度解释为什么会抛出错误。为什么我不能将负十进制数提高为十进制数? (顺便说一下,它们都是相同的 x 和 power_number,只有 x 是负数)
我猜这只是 python 认为只有一种方法应该进行求幂,所以也许我只是通过使 x 为正然后将结果切换回负来欺骗它。 但如果有其他方法会有所帮助。
当我从图片中输入 x 和 power_number 时,手持计算器给出有效的输出并且不会抛出数学错误...
解决方法
负数的浮点次幂将是一个复数。为了解决这个问题,你可以做的是在指数上添加 0j,让 python 知道你想要一个复数,然后只取实部。
下面的代码应该做你想做的。
x = -0.0806
power_number = 0.0806
rezultat = pow(float(x),float(power_number) + 0j).real
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。