我写了这段代码却意外地遇到了
for i in range(9):
x = np.arange(i+0.8, i+1.3, 0.1)
print(i, x)
这是输出
0 [0.8 0.9 1. 1.1 1.2]
1 [1.8 1.9 2. 2.1 2.2]
2 [2.8 2.9 3. 3.1 3.2]
3 [3.8 3.9 4. 4.1 4.2]
4 [4.8 4.9 5. 5.1 5.2]
5 [5.8 5.9 6. 6.1 6.2]
6 [6.8 6.9 7. 7.1 7.2]
7 [7.8 7.9 8. 8.1 8.2 8.3]
8 [8.8 8.9 9. 9.1 9.2]
为什么第七排是这样的?
为什么在第七排?
1条答案
按热度按时间nimxete21#
增加0.1不是一个好主意
一般来说,十进制小数不能很好地适应二进制浮点格式。
尝试从整数开始,然后除以10
结果
始终尝试使用整数进行循环控制等。
您可以通过添加“一点额外的”来捏造小数的内容,但一般来说,这只会导致以后难以发现的错误。
快速演示
您可能认为这应该是
True
,但实际上是False
。这是因为存在微小的差异,这是由于试图用二进制表示舍入小数时的舍入误差。
5.551115123125783e-17