前提・実現したいこと
python3系で、べき乗の計算を正しく行いたいです。
実務上はほぼ問題ないと思われますが、このようなことが起こる理由を知りたいです。
python3系で処理ロジックが変わったのでしょうか。
発生している問題・エラーメッセージ
- python3系だと、べき乗の計算で誤差が発生します。(0.7**2 = 0.489999..)
- python2だと、問題ないようです。(0.7**2 = 0.49)
該当のソースコード
- Python2.7
python
1# python 2Python 2.7.18 (default, Mar 8 2021, 13:02:45) 3[GCC 9.3.0] on linux2 4Type "help", "copyright", "credits" or "license" for more information. 5>>> print(0.7 ** 2) 60.49 7>>> print(pow(0.7,2)) 80.49 9>>> import math 10>>> print(math.pow(0.7,2)) 110.49 12>>> quit()
- Python3.8
python
1# python3 2Python 3.8.5 (default, May 27 2021, 13:30:53) 3[GCC 9.3.0] on linux 4Type "help", "copyright", "credits" or "license" for more information. 5>>> print(0.7 ** 2) 60.48999999999999994 7>>> print(pow(0.7,2)) 80.48999999999999994 9>>> import math 10>>> print(math.pow(0.7,2)) 110.48999999999999994 12>>> quit()
試したこと
- 0.7 ** 2, pow(), math.pow()でダメ
- numpyのpower()でも同じ結果です
- anacondaの3.7系でも同じ結果です
補足情報(FW/ツールのバージョンなど)
- python 2.7, 3.8
- Xubuntu 20.04
どうぞよろしくお願いいたします。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/16 21:40
2021/06/17 00:22