x = 0
while x != 1:
print(x)
x += 0.1
这样一段程序,我想大家应该都能脑补出来执行结果。真的是这样么。运行看看。
本帖隐藏的内容
事实上浮点数在计算机中并不是精确表示的而是近似值。
1/10 = 0.0001100110011 . . .
是无限循环的二进制数
0.1011=1*(1/2)+0*(1/4)+1*(1/8)+1*(1/16)=11/16
所以浮点数使用精确比较是比较危险的(==、!=),要改用不等式(<,<=,>,>=)
再试一试。
另,py2和py3的执行结果有差异。可以从侧面证明py3浮点数上比py2要准确。