ValueError: negative number cannot be raised to a fractional power

前端 未结 2 1204
离开以前
离开以前 2020-11-29 11:16

When I tried this in terminal

>>> (-3.66/26.32)**0.2

I got the following error

Traceback (most recent call last):
         


        
相关标签:
2条回答
  • 2020-11-29 11:37

    Raising to a power takes precedence over the unary minus sign.

    So you have -(0.13905775075987842 ** 0.2) and not (-0.13905775075987842) ** 0.2 as you expect:

    >>> -0.13905775075987842 ** 0.2
    -0.6739676327771593
    >>> (-0.13905775075987842) ** 0.2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: negative number cannot be raised to a fractional power
    

    If you want it to work you should write (-3.66/26.32 + 0j)**0.2

    >>> (-3.66/26.32 + 0j)**0.2
    (0.5452512685753758+0.39614823506888347j)
    

    Or switch Python 3 as noted by @TimPietzcker.

    0 讨论(0)
  • 2020-11-29 11:46

    Switch to Python 3 which automatically promotes the result to a complex number:

    >>> (-3.66/26.32)**0.2
    (0.5452512685753758+0.39614823506888347j)
    
    0 讨论(0)
提交回复
热议问题