我知道模数(%)的作用,它会给你余数。但它是如何做到的呢? 我看到它使用公式:modulus = dividend - (dividend / divisor)* divisor 10%3应该给你1(10为被除数,3为除数) 论坛给出:10-(10/3)* 3 = 10-10 = 0这显然是错误的。
然后再次使用纯变量,被除数 - (被除数/除数)*除数=被除数 - 被除数= 0
我在这里做错了什么? (此外,该公式来自JASS的原生,这是魔兽争霸3游戏中使用的语言)
答案 0 :(得分:4)
(dividend / divisor)
中的是一个求整数的整数除法。
因此,10-(10/3)* 3 = 10-9 = 1
答案 1 :(得分:2)
在许多使用C,C ++,Java等的编程语言中,10/3会产生3,因为除法实际上是整数除法,而小数部分被截断。
所以,换句话说,n / d只给你商。
现在,从算术我们知道任何正整数n和任何正整数除法器d,n可以表示为:n = q * d + r。如果0≤r< n(并且可以证明只有一个这样的正r小于n),q称为商,r称为余数。
在这些编程语言中,n / d为你提供q。
所以,n - (n / d)* d = n - q * d = r,余数。