在while循环中减去双精度会产生奇怪的结果

时间:2014-12-07 16:11:09

标签: ios swift

我得到了意想不到的结果,我无法弄清楚原因。在下面的Swift代码中,我在while循环中减去双精度,并且我期望结果始终为x.55,因为我每次只减去5.00,但在最后一次迭代中,结果是在之后添加了一堆额外的数字十进制,我无法弄清楚原因。

有人能指出我在正确的方向吗?如果我希望结果始终精确到两位小数,我需要做些什么呢?

以下是示例代码:

var testValue1 = 5.00
var testValue2 = 15.55

while testValue2 >= testValue1 {
    testValue2 = testValue2 - testValue1
    println("testValue2: \(testValue2)")
}

这是控制台输出: testValue2:10.55 testValue2:5.55 testValue2:0.550000000000001

(我希望控制台输出为:10.55,5.55,5.55)

1 个答案:

答案 0 :(得分:1)

以下是最终解决方案:)

var testValue1 = 5.00
var testValue2 = 15.55

while testValue2 >= testValue1 {
    testValue2 = testValue2 - testValue1
    var s = NSString(format: "%0.2f", testValue2)
    println("testValue2: \(s)")
}

感谢Thomas Kilian让我知道如何实现我的逻辑!