有馬です。

gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote

| んで、これは以下のCに相当します:
| 
| >                           Ruby                   Python
| >      a     b  |   a/b   a%b  a.remainder(b) |    a/b      a%b
| >   ============|=============================|=================
| >A    13     4  |    3     1       1          |     3        1   
| >B    13    -4  |   -3    -3       1          |    -4       -3
| >C   -13     4  |   -3     3      -1          |    -4        3
| >D   -13    -4  |    3    -1      -1          |     3       -1
| 
| つまり、
| 
| >C の場合,-13 は 4 を法として 3 と合同ですから,3 が剰余であり,
| >その結果,商は -4 となるべきです.つまり Python が正しいことに
| >なります.
| 
| ってわけです。
| 
| 少なくとも現状の/と%の関係は全く持って分からないという元々の
| 疑問には賛成です。ただしこの問題は最終的に好みくらいしか基準
| が無いので、

C99 だと -13 / 4 => -3 , -13 % 4 => -1 になるようですね。
これは基準になるでしょうか?

http://www.geocities.co.jp/SiliconValley/1002/c99d/c99d05.htm#dt19990607

--
 有馬 康弘 <fit0298 / fitec.co.jp>