swift - 大整数 Swift 4.0

标签 swift bigint mod

我想执行一个大的 mod (%) 操作,如下例所示:

083123456787654325500479087654 % 55

如您所见,这个数字大于 Int64.max (9223372036854775807)

我试图将这个“083123456787654325500479087654”从字符串解析为小数,但我无法对两个小数执行模运算。

有什么建议吗?

最佳答案

您可以在两位小数之间定义自定义模运算符,例如 follow。我没有时间测试所有场景。所以我选择了最简单的情况:在 2 个正数之间取模。您可以扩展它以适合您的情况:

func % (lhs: Decimal, rhs: Decimal) -> Decimal {
    precondition(lhs > 0 && rhs > 0)

    if lhs < rhs {
        return lhs
    } else if lhs == rhs {
        return 0
    }

    var quotient = lhs / rhs
    var rounded = Decimal()
    NSDecimalRound(&rounded, &quotient, 0, .down)

    return lhs - (rounded * rhs)
}

let a = Decimal(string: "083123456787654325500479087654")!
print(a % 55)

结果是49。

关于swift - 大整数 Swift 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039163/

相关文章:

ios - 尝试根据触摸位置为图像过滤器制作 kCIInputCenterKey 并翻转 y 坐标

postgresql - 将序列数据类型从 INT 更改为 BIGINT PostgreSQL

algorithm - 确定 (x^2 + x + 1)^n 中 x^m 项的系数是偶数还是奇数

algorithm - 计算 1^X + 2^X + ... + N^X mod 1000000007

ios - iPhone 应用程序在收到推送通知时崩溃

ios - PUT 方法的 Alamofire Content-Type application/json

swift - 在渲染器 : update at time 中同步执行 2 个任务

c - C语言中的大整数?

转换为 big int 时出现 PHP 日期格式问题

java - 来回遍历数组