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
在while循环中为什么tweenVal会超过1。
它是.8,.9,1.0,1.1,1.2,1.3 ...... 1.9 ......我想要它去.8,.9,1.0,.9,.8,.7 ...... 0,0.1,0.2
我为它下面的值做了同样的事情,介于-14和14之间它是否与浮点有关?
答案 0 :(得分:2)
浮点编码不精确,不能代表所有可能的值。在converted to double precision ieee754 format时,您认为0.1
实际上是0.10000000149011612
。底线 - 不要对浮点值进行精确比较。
这样的事情会更好:
if tweenVal > 0.95:
increment1=-0.1
if tweenVal < 0.05:
increment1=0.1