配列全体を印刷する場合よりも、forループでそれらを反復処理するとき、なぜ値が異なっていますか?

エミール:

Pythonでは、なぜ、反復プロセスでそれらを印刷、または配列全体を印刷するため、値の変更をnumpyのを使用して、私はこれをどのように修正することができますか?私は彼らが0.8の代わりに、0.799999999を例えばするしたいと思います...

>>> import numpy as np
>>> b = np.arange(0.5,2,0.1)
>>> for value in b:
...     print(value)
... 
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999
1.1999999999999997
1.2999999999999998
1.4
1.4999999999999998
1.5999999999999996
1.6999999999999997
1.7999999999999998
1.8999999999999997
>>> print(b)
[0.5 0.6 0.7 0.8 0.9 1.  1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9]
>>> 
謎:

Pythonとnumpyの使用がために発生小数点演算浮動いくつかの数字は、すなわち0.1、正確に表現することができません。また、チェックのpython浮動小数点の問題&制限を

あなたはこのためにnumpyののnp.aroundを使用することができます。

>> b = np.around(b, 1) # first arg is the np array, second arg is the no. of decimal points
>> for value in b:
      print(value)

0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=8371&siteId=1