我正在尝试使用 while 创建一个计数为 3(步长为 0.1)的脚本,并且我正在尝试使其不为没有小数的数字显示 .0(1.0 应显示为 1,2.0 应显示为是 2...) 我试图做的是将 float 转换为 int,然后检查它们是否相等。问题是它只适用于第一个数字 (0),但当它达到 1.0 和 2.0 时就不起作用了。
这是我的代码:
i = 0
while i < 3.1:
if int(i) == i:
print int(i)
else:
print i
i = i + 0.1
这是我得到的输出:
0
0.1
0.2
0.3
0.4
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
2.0
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3.0
我应该得到的输出:
0
0.1
0.2
0.3
0.4
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
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
感谢您的宝贵时间。
请您参考如下方法:
由于 float 缺乏精度,它们不会有精确的整数表示。因此,您要确保差异小于一些小的 epsilon。
epsilon = 1e-10
i = 0
while i < 3.1:
if abs(round(i) - i) < epsilon:
print round(i)
else:
print i
i = i + 0.1
