Mar*_*n R 22
Swift 余数运算符 %计算整数除法的余数:
a % b = a - (a/b) * b
Run Code Online (Sandbox Code Playgroud)
/截断整数除法在哪里.在你的情况下
(-1) % 3 = (-1) - ((-1)/3) * 3 = (-1) - 0 * 3 = -1
Run Code Online (Sandbox Code Playgroud)
因此,余数总是与被除数相同(除非余数为零).
这与所要求的定义相同,例如在C99标准中,参见例如 ANSI C或ISO C是否指定-5%10应该是什么?.另请参阅 Wikipedia:Modulo操作,以概述如何在不同的编程语言中处理它.
可以在Swift中定义"真实"模数函数,如下所示:
func mod(_ a: Int, _ n: Int) -> Int {
precondition(n > 0, "modulus must be positive")
let r = a % n
return r >= 0 ? r : r + n
}
print(mod(-1, 3)) // 2
Run Code Online (Sandbox Code Playgroud)
来自语言指南 - 基本操作员:
剩余运营商
余数运算符(
a % b)计算出b内部适合的多个倍数,a并返回剩余的值(称为余数).余数operator(
%)也称为其他语言的模运算符.但是,它在Swift中对负数的行为意味着它严格来说是一个余数而不是模运算....
在计算a的负值的余数时应用相同的方法:
Run Code Online (Sandbox Code Playgroud)-9 % 4 // equals -1插入
-9并4输入等式产生:Run Code Online (Sandbox Code Playgroud)-9 = (4 x -2) + -1给出余数值
-1.
在你的情况下,没有3适合1,余数是1(与-1- >余数相同-1).