Целые числа больше, чем Int64

Я пытаюсь получить пользовательский номер ввода и найти сумму всех цифр. У меня проблемы с большими числами, так как они не будут регистрироваться под Int64. Любая идея относительно того, какие структуры я мог бы использовать для хранения значения? (Я попробовал UInt64, и это не очень хорошо работало с негативами, однако я бы предпочел что-то большее, чем UInt64, в любом случае. Мне трудно реализовать UInt128 из. Есть ли тип числа с большей емкостью, чем u_long/UInt64 в Swift?)

import Foundation

func getInteger() -> Int64 {
var value:Int64 = 0

while true {

    //we aren't doing anything with input, so we make it a constant
    let input = readLine()

    //ensure its not nil
    if let unwrappedInput = input {
        if let unwrappedInt = Int64(unwrappedInput) {
            value = unwrappedInt
            break
        }
    }
    else { print("You entered a nil. Try again:") }
}
return value
}
print("Please enter an integer")
// Gets user input
var input = getInteger()
var arr = [Int] ()
var sum = 0
var negative = false
// If input is less than 0, makes it positive
if input < 0 {
input = (input * -1)
negative = true
}
if (input < 10) && (input >= 1) && (negative == true) {
    var remain = (-1)*(input%10)
    arr.append(Int(remain))
    input = (input/10)
}
else {
    var remain = (input%10)
    arr.append(Int(remain))
    input = (input/10)
}
}
// Adds numbers in array to find sum of digits
var i:Int = 0
var size:Int = (arr.count - 1)
while i<=size {
sum = sum + arr[i]
i = (i+1)
}
// Prints sum
print("\(sum)")

1 ответ

Вы можете использовать строку для выполнения описанной вами операции. Переберите каждый символ и преобразуйте его в целое число и добавьте к сумме. Будьте осторожны с ошибками.

Другие вопросы по тегам