在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