私はJavaに不慣れで、実際にはプログラミング全般です。剰余演算子(%)が2つの数値の余りを返すことは理解していますが、17%40=17である理由がわかりません。
40%17 = 6、17%5 = 2、40%5=0であることを理解しています。余りとして返される値の要点を理解しています。しかし、17%40=17は私を困惑させました。
私が考案できる唯一の合理化は、余りが1未満であるため、合計値17が返されるということです。なぜ0ではないのでしょうか。この謎を私に説明するのを手伝ってください。
17/40で割ると、商は0になり、余りは17になります。
モジュロ演算子( )は余り%を返します。
すなわち
a % b = remainder of a / b
Javaには、よく知らないかもしれない重要な算術演算子が1つあります。これは、剰余演算子または剰余演算子とも呼ばれます。%演算子は、残りの2つの数値を返します。たとえば、10を3で割ると余りが1になるため、10%3は1になります。
したがって、あなたの場合、17/40余りは17のままになるので、結果は17になります。
Likeと同じです。
1%10 = 1
私は、第 3 と第 4 の標準的な数学を学習することが重要なポイントだと思います。
あなたが見るなら(除算の構文を理解してほしい。それは人気のある3番目の標準的な方法です)
____
40)17
17 は 40 で割り切れないため、リマインダー 17 が表示されます。その後、「.」が追加されます。そして、分数が追加されます
数値aとb、その商qと剰余rがある場合、次が成り立つ必要があります。
q · b + r = a
つまり、商 ( q ) に除数 ( b ) を掛け、剰余 ( r ) を加算すると、結果は被除数 ( a ) になります。
あなたの場合、 a = 17, b = 40, q = 0 なので、rは17でなければなりません。
注: 上記の方程式は、Nikolay Kuznetsov の answerからの方程式の再配置にすぎませんが、この方法の方が理解しやすいと思います。
たぶん、これはそれについて考えるための別の、より役立つ方法です。
整数aとに除算を適用すると、実際には次のようbに関連付けようとしますa。b
a = Q * b + R
aは の倍数とb残りの部分です。QおよびRは整数です。これを簡単にするために、負でない数についても考えてみましょう。倍数 ,Qは商でありR、残り , は剰余です。この関係を機能させる最小のものです。
ほとんどの言語で、a / bは を与えQ、 と は をa % b与えますR。(実際、プロセッサは両方を一度に計算する傾向があります。これらは非常に関連しています。)
したがって、a17 でb40 の場合、次のように記述した場合にのみ機能します。
17 = 0 * 40 + 17
a % bこれが17でなければならない理由です。
(負の数を考慮すると、より複雑になることに注意してください。)