From: Yasushi Abe <yasushi / stbbs.net>
Subject: [ruby-list:20369] divmod()
Date: Tue, 25 Jan 2000 09:24:39 +0900

> ドキュメントには特に記述がなかったので、rubyのソースを読んでみたんです
> けど、divmod()で%の演算を呼び出しているところまでで挫折してしまいまし
> た(^^;

divmod()っていうか、Fixnum#%ですかね。

$ ruby -e "p (-123 % 10)"
7

$ ruby -e "p (-123.remainder(10))"
-3

$ cat mod.c
#include <stdio.h>
int main() { printf("%d\n", -123 % 10); return 0; }

$ gcc -Wall mod.c; ./a.out
-3

$ xemacs --version
XEmacs 21.1 (patch 8) "Bryce Canyon" [Lucid] (i586-pc-linux, Mule) of Sun Jan  2 2000 on yashipc

(% -123 10)
-3

まあ、ややこしいといえば、そうかも‥。でも ruby-man-1.4-jpにも

>    remainder(other)
>        selfをotherで割った余りを返します。整数に負の数を含む時、%と値
>        が異なります。
>
>            13 % 4 => 1 13 % -4 => -3 -13 % 4 => 3 -13 % -4 => -1
>            13.remainder(4) => 1 13.remainder(-4) => 1 -13.remainder(4) =>
>            -1 -13.remainder(-4) => -1

って、あるので‥。
--
          yashi