0

我是 Java 新手,实际上是一般的编程。我知道模运算符 (%) 返回两个数字的余数,但是,我不明白为什么 17 % 40 = 17。

我知道 40 % 17 = 6、17 % 5 = 2 和 40 % 5 = 0。我得到了作为余数返回的值的要点。但是 17 % 40 = 17 让我很难过。

我能想到的唯一合理化是,由于余数小于 1,所以返回总值 17,为什么不是 0?请帮助向我解释这个谜。

4

6 回答 6

15

除以 17/40 时,为 0,余数为 17。

模运算符( )%返回余数

IE

a % b = remainder of a / b
于 2013-01-23T05:43:27.377 回答
2

Java 有一个你可能不熟悉的重要算术运算符,%,也称为模数或余数运算符。% 运算符返回两个数字的余数。例如 10 % 3 是 1,因为 10 除以 3 余数为 1。

因此,在您的情况下17/40,余数为 17,因此结果为 17。

它与Like相同。

1%10 = 1
于 2013-01-23T05:46:39.217 回答
1

来自Knuth的Wiki方程:

在此处输入图像描述

a = 17
n = 40
floor(a/n) = 0
so r = 17

那时简直就是什么n > a时候。ra

于 2013-01-23T05:47:22.307 回答
1

我想学习第三和第四标准数学是关键。

如果你看到(希望理解除法语法。它是流行的第三种标准方式)

  ____
40)17

你会得到一个提醒 17 因为 17 不能被 40 整除。然后会有一个 '.' 的加法。然后分数将被添加

于 2013-01-23T05:49:46.390 回答
1

如果您有数字ab,它们的商q和余数r,那么以下必须为真:

q · b + r = a

也就是说,如果将商 ( q ) 乘以除数 ( b ) 并加上余数 ( r ),则结果是被除数 ( a )。

在你的情况下a = 17, b = 40, q = 0 所以r必须是17

注意:上面的等式只是Nikolay Kuznetsov 答案的等式的重新排列,但我认为这样更容易理解。

于 2013-01-23T10:03:20.830 回答
0

也许这是一种不同的、更有帮助的思考方式。

当我们将除法应用于整数a和时,b我们实际上是在尝试像这样关联:ab

a = Q * b + R

a是 的一些倍数b,加上一些剩余部分。Q并且R是整数;为了简单起见,我们也只考虑非负数。倍数 ,Q是商,R余数 , 是余数 - 使这种关系起作用的最小的。

在大多数语言中,a / b给你Qa % b给你R。(事实上​​,处理器倾向于同时计算两者——它们是如此相关。)

所以如果a是 17 和b40,它只有在你写的时候才有效:

17 = 0 * 40 + 17

这就是为什么a % b必须是 17 岁。

(请注意,在考虑负数时它会变得更加复杂。)

于 2013-01-23T10:04:26.507 回答