Python 在1和0之间的while循环内增加1。为什么变量val在1处不反转?

Python 在1和0之间的while循环内增加1。为什么变量val在1处不反转?,python,python-2.7,while-loop,floating-point,Python,Python 2.7,While Loop,Floating Point,在while循环中,tweenVal为什么一直超过1 它是0.8,9,1.0,1.1,1.2,1.3…1.9。。。我想让它走,8,9,1,0,9,8,7,0,1,2 对于-14和14之间的值,我也在做同样的事情,这与它是浮点有关吗?浮点编码不精确,不能表示所有可能的值。您认为的0.1实际上是0.1000000149011612when。底线——不要对浮点值进行精确比较 这样的方法应该更有效: tweeninc=0.0 tranVal=0.0 increment=1 tweenVal=0.0 in

在while循环中,tweenVal为什么一直超过1

它是0.8,9,1.0,1.1,1.2,1.3…1.9。。。我想让它走,8,9,1,0,9,8,7,0,1,2


对于-14和14之间的值,我也在做同样的事情,这与它是浮点有关吗?

浮点编码不精确,不能表示所有可能的值。您认为的
0.1
实际上是
0.1000000149011612
when。底线——不要对浮点值进行精确比较

这样的方法应该更有效:

tweeninc=0.0
tranVal=0.0
increment=1
tweenVal=0.0
increment1=0.1
while True:



    if tweenVal==1.0:
        increment1=-0.1
    if tweenVal==0.0:
        increment1=0.1
    if tranVal==14:
        increment=-1
    if tranVal==-14:
        increment=1
    tranVal=tranVal+increment
    tweenVal=tweenVal+increment1

    print tweenVal
如果tweenVal>0.95:
增量1=-0.1
如果tweenVal<0.05:
增量1=0.1

我建议您将其中一个标记更改为语言标记。谢谢,人们仍然会看到这个问题,因为它不是“新的”,它仍然对所有人可见。另外,我确实认为你的问题在于普通的浮点问题。尝试引入一个方差变量(类似于0.0001),如果tweenVal在您的目标方差范围内,则执行您的操作。投票以重复方式关闭。关于堆栈溢出,有很多问题,比如为什么浮点计算会产生意想不到的结果。这里有一个:
if tweenVal > 0.95:
    increment1=-0.1
if tweenVal < 0.05:
    increment1=0.1