負数の剰余

shunirr.hatenablog.jp

 

随分久しぶりに地雷を踏んだ。

CおよびC++では

-5 % 3 = -2

 5 % -3 = 2

RubyおよびPythonでは

-5 % 3 = 1

 5 % -3 = -1

 

そもそも商が違うのだ。

CおよびC++では

-5 / 3 = -1

 5 / -3 = -1

Pythonでは

-5 // 3 = -2

 5 // -3 = -2

つまり,商を0側に丸めるかマイナス側に丸めるかの違い。

  

複数言語またいでテストコード書くと色々分かる。