Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在while循环中减去两倍会得到奇怪的结果_Ios_Swift - Fatal编程技术网

Ios 在while循环中减去两倍会得到奇怪的结果

Ios 在while循环中减去两倍会得到奇怪的结果,ios,swift,Ios,Swift,我得到了一个意想不到的结果,我不知道为什么。在下面的Swift代码中,我在while循环中减去double,我希望结果总是x.55,因为我每次只减去5.00,但在最后一次迭代中,结果是在小数点后加上一堆额外的数字,我不明白为什么 有人能给我指一下正确的方向吗?如果我希望结果总是精确到小数点后两位,我需要做什么不同的事情 下面是示例代码: var testValue1 = 5.00 var testValue2 = 15.55 while testValue2 >= testValue1

我得到了一个意想不到的结果,我不知道为什么。在下面的Swift代码中,我在while循环中减去double,我希望结果总是x.55,因为我每次只减去5.00,但在最后一次迭代中,结果是在小数点后加上一堆额外的数字,我不明白为什么

有人能给我指一下正确的方向吗?如果我希望结果总是精确到小数点后两位,我需要做什么不同的事情

下面是示例代码:

var testValue1 = 5.00
var testValue2 = 15.55

while testValue2 >= testValue1 {
    testValue2 = testValue2 - testValue1
    println("testValue2: \(testValue2)")
}
以下是控制台输出: testValue2:10.55 测试值2:5.55 testValue2:0.550000000000001


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

这里是最终的解决方案:)


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

这与Xcode、Swift或iOS都无关。这是浮点数的标准行为。请花时间学习浮点数@user3525727:如果你想要的是只显示2位小数的数字,看看@Antonio所说的:降低精度并不会带来更好的结果。用浮点数代替双倍点数意味着你得到的结果不够精确。哇,好的,谢谢大家。对不起,我弄错了。请尝试
让s=NSString(格式:“%2.2f”,testValue2);println(“testValue2:\(s)”)
真正需要的是将数字四舍五入到所需的小数位数,而不是依赖于格式或打印语句。@Zaph嘿,它仍然起作用,因为他希望将结果显示为小数点后2位
var testValue1 = 5.00
var testValue2 = 15.55

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