为什么 math.pow 会导致 ValueError: math 域错误?

发布于 2025-01-01 05:27:45 字数 181 浏览 0 评论 0原文

代码如下:

exp = 1.79
def calc(t):
    return pow(t - 1, exp)

t 的输入值范围为 0 到 1(例如 0.04)。这段代码引发了“数学域异常”,但我不确定为什么。

我该如何解决这个问题?

Here is the code:

exp = 1.79
def calc(t):
    return pow(t - 1, exp)

The input values of t range from 0 to 1 (e.g. 0.04). This code throws a "math domain exception," but I'm not sure why.

How can I solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

百变从容 2025-01-08 05:27:45

如果 t 的范围是 0 到 1,则 t - 1 的范围是 -1 到 0。负数不能求分数幂,也不能通过 pow< /code> 内置也不是 math.pow

If t ranges from 0 to 1, then t - 1 ranges from -1 to 0. Negative numbers cannot be raised to a fractional power, neither by pow builtin nor math.pow.

双手揣兜 2025-01-08 05:27:45

负数乘以小数指数不会得到实数。如果您坚持计算并且使用它们,但请注意,您需要一些复数方面的经验才能使用结果。

>>> cmath.exp(cmath.log(0.04 - 1) * 1.79)
(0.7344763337664206-0.5697182434534497j)

Negative numbers raised to a fractional exponent do not result in real numbers. You will have to use cmath if you insist on calculating and using them, but note that you will need some experience in complex numbers in order to make use of the result.

>>> cmath.exp(cmath.log(0.04 - 1) * 1.79)
(0.7344763337664206-0.5697182434534497j)
横笛休吹塞上声 2025-01-08 05:27:45
exp = 1.79
def calc(t):
    return pow(t - 1, exp)

print calc(1.00) # t-1 is 0, there will be no error.
print calc(0.99) # t-1 is negative, will raise an error.
exp = 1.79
def calc(t):
    return pow(t - 1, exp)

print calc(1.00) # t-1 is 0, there will be no error.
print calc(0.99) # t-1 is negative, will raise an error.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文