Ios 知道一个数字的最高位数

Ios 知道一个数字的最高位数,ios,swift3,base-conversion,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个数字时,应用程序崩溃了。在我为“currentnumbe

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

@IBAction func inputButton(_ sender: UIButton)
{
    currentNumber = currentNumber * 10 + (the number I want to add)
    labelText.text = "\(currentNumber)"
}
它工作得很好,但当我输入大约10个数字时,应用程序崩溃了。在我为“currentnumber”设置新值的那一行之后,Xcode向我显示:

Thread1:EXC\u BAD\u指令(代码=EXC\u 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)"
guard let inputNumber=Int(inputString)else{
labelText.text=“输入的不是数字或超出范围”
返回
}
保护电流编号<(Int.max-inputNumber)/10其他{
labelText.text=“溢出”
返回
}
currentNumber=currentNumber*10+inputNumber
labelText.text=“\(当前编号)”

崩溃时,
currentNumber
的值是多少?它与我为currentNumber输入的任何值一起崩溃,但你说“当我输入大约10个数字时,应用程序崩溃”。那么崩溃时的最终值是什么?currentNumber的类型是什么?Int?例如,数字可能是230120203,如果我输入另一个数字(任何数字),它就会崩溃。这就是你的意思?我的想法,没错。但我想在回答之前确定currentNumber是整数。有没有办法添加更多的数字?@DiegoEsc使用
NSDecimalNumber
而不是
Int
@nikolai我如何添加小数?谢谢