最近在調代碼,碰到冪函數、指數函數,總是提示
ValueError: math domain error
ValueError: negative number cannot be raised to a fractional power
這些異常、錯誤,
發現裏邊有很多細節問題:
python中,想要表示a的b次方時,有兩種方法:
1,math.pow()這個內置函數
2,**運算符
這兩種方法效果是一樣的,但是當
b爲分數,a爲負數:當冪運算符的底數爲負數、冪爲分數時,Python會拋出ValueError: negative number cannot be raised to a fractional power
異常,
這時有兩種方法可以解決此問題:
1,底數a正負均可不影響你的算法的話,加一個絕對值就行了即abs(a);
2,如果底數a必須是正、或必須是負的話,需要採用複數進行運算。因此凡是遇到冪爲分數的項,都將底數用complex()
轉換爲複數。
參考:http://hyry.dip.jp/tech/slice/slice.html/41