Ios 当试图以0.10倒计时时,它会打印错误的内容

Ios 当试图以0.10倒计时时,它会打印错误的内容,ios,swift,timer,Ios,Swift,Timer,我正在尝试为iOS做一个倒计时,当我尝试让它下降0.10,当我运行程序时,比如8.2,8.1,它开始像这样打印7.90000000,7.80000012之类的东西 它应该停在0,但是 但当它下降0.25,或0.5或1时,它的效果非常好 这是我的密码 var seconds = 10.0 var timer = Timer() @IBAction func startPressed(_ sender: Any) { startBtn.isHidden = true click

我正在尝试为iOS做一个倒计时,当我尝试让它下降0.10,当我运行程序时,比如8.2,8.1,它开始像这样打印7.90000000,7.80000012之类的东西

它应该停在0,但是

但当它下降0.25,或0.5或1时,它的效果非常好

这是我的密码

var seconds = 10.0
var timer = Timer()

@IBAction func startPressed(_ sender: Any) {
    startBtn.isHidden = true
    clickedTxt.isHidden = false
    numClicked.isHidden = false
    tapView.isEnabled = true
    timerTxt.isHidden = false
    secs.isHidden = false

    timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.counter), userInfo: nil, repeats: true)
}

func counter()
{
    if(seconds > 0.0)
    {
        seconds -= 0.1
        secs.text = "\(seconds)"
    } else {
        timer.invalidate()
    }
}

从本质上讲,您看到了浮点数格式化方式的影响。您可以在中阅读更多关于这方面的信息

我想你主要是想把标签的格式设计得很好。在这种情况下,您可以执行以下操作:

secs.text = String(format:"%.1f", secs)

将“.1”替换为所需小数点后的任意多个位数。

阅读此内容可以解决输出问题,但它不能解决在
0
处停止的问题。与其测试它是否大于0.0,不如测试它是否大于您能够容忍的错误值。如<代码>(秒>0.0001)< /代码>。谢谢Aaron Golden和Price Ringo,它现在起作用了。亚伦像C++中的设定精度吗??