[python][math]負數開方問題


在python中,開方計算的方法主要有兩種:

  1. 使用**計算符
    In [4]: 8 ** (1./3)
    Out[4]: 2.0
    
  2. 使用math.pow(x,y)方法
    In [5]: math.pow(8,1./3)
    Out[5]: 2.0
    

但這兩種方法在處理負數時,並不能正常運行:

In [6]: (-8) ** (1./3)
ValueError: negative number cannot be raised to a fractional power

In [7]: math.pow(-8,1./3)
ValueError: math domain error

因此,在處理負數的開方運算時,應先將負數轉為整數開方計算后,再加上負號.

In [9]: a = -8

In [10]: abs(a) ** (1.0/3) * (-1 if a<0 else 1)
Out[10]: -2.0

In [11]: math.pow(abs(a),1.0/3) * (-1 if a<0 else 1)
Out[11]: -2.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM