知道一个数的最高位

know the highest digit of a number

我正在 Xcode 8 中使用 swift 3 做一个应用程序,它是一个基本转换器,输入值是用按钮设置的:

@IBAction func inputButton(_ sender: UIButton)
{
    currentNumber = currentNumber * 10 + (the number I want to add)
    labelText.text = "\(currentNumber)"
}

它运行完美,但是当我输入大约 10 个数字时,应用程序崩溃了。在我为 "currentnumber" Xcode 设置新值的行之后显示:

线程 1:EXC_BAD_INSTRUCTION(代码=EXC_INPOV,子代码=0x0)

溢出是(谢天谢地)Swift 中的一个错误。

您可以在实际执行计算之前检查值是否会超过 Int.max,从而在您的代码中防止出现这种情况。

这里有一些代码可以帮助您入门:

guard let inputNumber = Int(inputString) else {
    labelText.text = "input not a number or out of range"
    return
}

guard currentNumber < (Int.max - inputNumber) / 10 else {
    labelText.text = "overflow"
    return
}

currentNumber = currentNumber * 10 + inputNumber
labelText.text = "\(currentNumber)"