[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