知道数字的最高位数

时间:2016-11-09 15:45:34

标签: ios swift3 base-conversion

我在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)

1 个答案:

答案 0 :(得分:2)

溢出(谢天谢地)是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)"