如果条件为真时语句未运行

时间:2015-09-13 06:36:16

标签: swift if-statement sprite-kit

在这段代码中,我的一个精灵应该降低速度,直到达到0.75。但是,一旦代码达到0.75,它就会因某种原因而不断减少。 我有一个定时器,每0.2秒调用一次speed_Control函数,sprite.speed从1.0开始。

func speed_Control() {
    if boolDecrease == true {
        speed_Decrease()
    }
}

func speed_Decrease() {
    if sprite.speed != 0.75 {
        println(sprite.speed)
        sprite.speed -= 0.05
    } else {
        boolDecrease = false
    }
}

我添加了println(sprite.speed)以查看我的精灵是否真的返回0.75,它确实如此,所以如果sprite.speed!= 0.75,我不知道它是如何通过的。

有人能看出这有什么问题吗?

1 个答案:

答案 0 :(得分:4)

不应使用(in)相等运算符比较浮点值。无法准确表示值0.05,因此speed最终会接近但不完全等于0.75。这里的一个简单解决方案是将条件sprite.speed != 0.75更改为sprite.speed > 0.76