在python中,開方計算的方法主要有兩種:
- 使用
**
計算符In [4]: 8 ** (1./3) Out[4]: 2.0
- 使用
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