大整数 Swift 4.0
Big Integer Swift 4.0
我想执行一个大的 mod (%) 操作,如下例所示:
083123456787654325500479087654% 55
如您所见,这个数字大于 Int64.max (9223372036854775807)
我试图将这个“083123456787654325500479087654”从字符串解析为小数,但我无法对两个小数执行 mod 操作。
有什么建议吗?
您可以在两位小数之间定义自定义 mod 运算符,例如 follow。我没有时间测试所有场景。所以我选择了最简单的情况:modulo 介于 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, "ient, 0, .down)
return lhs - (rounded * rhs)
}
let a = Decimal(string: "083123456787654325500479087654")!
print(a % 55)
结果是49。
我想执行一个大的 mod (%) 操作,如下例所示:
083123456787654325500479087654% 55
如您所见,这个数字大于 Int64.max (9223372036854775807)
我试图将这个“083123456787654325500479087654”从字符串解析为小数,但我无法对两个小数执行 mod 操作。
有什么建议吗?
您可以在两位小数之间定义自定义 mod 运算符,例如 follow。我没有时间测试所有场景。所以我选择了最简单的情况:modulo 介于 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, "ient, 0, .down)
return lhs - (rounded * rhs)
}
let a = Decimal(string: "083123456787654325500479087654")!
print(a % 55)
结果是49。