プロが教えるわが家の防犯対策術!

excelで
mod(10,3) = 1
です
mod(-10,3) = 2
になります。
どうしてですか?
1じゃないの?

A 回答 (6件)

MOD関数は被序数、序数どちらかが負数の場合、そうなります。


MOD関数は被序数-序数×INT(被序数÷序数)が内部的に実行されるようです。
INT関数の定義は小数点付きの数値をその値を超えない整数にするです。
ご質問の条件の場合、-10÷3を行い、-3.333…になるのですがこれを
INTの結果はー3ではなくー4にします。
これが予想と反する原因です。
    • good
    • 0

No.2 です。


「常識」としては、先ほどの回答で書いたように、
3の剰余系は、0、1、2、0、1、2、・・・
となるのが理解できると思います。
mod(x,a)+mod(y,a)=mod(x+y,a)
も成り立ちます。ですので、
mod(10,3)+mod(-10,3)=mod(0,3)=0
mod(10,3)=1 ですから
mod(-10,3)=2 でないと、いけませんね。
    • good
    • 0

それとリターン値の符号は、除数の符号と一致させるとのことです。

それで答えは「プラス」2です。
他に、負の数の場合、INT、FLOOR、CEILING、ROUND関係関数、(MODも含め)などは常識と違う動きをしないか、いつも、反省チェックが必要です。
    • good
    • 0

#1のかたの通りですが、エクセルのヘルプによると


mod(n,d)=n-d・INT(n/d)
とのことですから
INT(-10/3)=-4になります。
    • good
    • 0

MOD(n, d) = n - d*INT(n/d)


で定義されていますから、
MOD(-10, 3) = -10 - 3*INT(-10/3)
ここで、INT(-10/3) = -4 ですから
(負の数の切捨ては小さくなります)
MOD(-10, 3) = -10 - 3*(-4) = 2
ですね。
まあ、次のように mod(x,3) は、順番になるますし。
2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 ...
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
    • good
    • 0

-10=3×(-4)+2


だから。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!