·
python
0.01を10000回足しても100にならない
「0.01を10000回足しても100にならない」というツイートを見ました。
有名な話のようで、「数値計算の常識」という本に書かれているようです。今度読んでみたいと思います。Pythonで検証してみました。
まず、10個の「0.01」を足してみます。
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> lst=[0.01]*10
>>> lst
[0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]
>>> sum(lst)
0.09999999999999999
この段階で、既に誤差が出ているようです。次に、10000個を足してみました。
>>> lst = [0.01] * 10000
>>> sum(lst)
100.00000000001425
確かに、100にはなりませんでした。こういうものなのでしょう。
About the author and the blog
Masayuki Ariki is a Hobby Programmer and an not enthusiastic blogger, curious about any Python modules, Deep learning, and the web. More...