模数如何正常工作?

时间:2011-07-28 11:55:05

标签: math division modulo

我知道模数(%)的作用,它会给你余数。但它是如何做到的呢? 我看到它使用公式:modulus = dividend - (dividend / divisor)* divisor 10%3应该给你1(10为被除数,3为除数) 论坛给出:10-(10/3)* 3 = 10-10 = 0这显然是错误的。

然后再次使用纯变量,被除数 - (被除数/除数)*除数=被除数 - 被除数= 0

我在这里做错了什么? (此外,该公式来自JASS的原生,这是魔兽争霸3游戏中使用的语言)

2 个答案:

答案 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,余数。