moduloメソッドとremainderメソッド

数値クラスの勉強をしていて、moduloメソッドとremainderメソッドが出てきたので、
その違いってのはどういうのなのかなって思ってまとめです。

まず、 x.modulo(y) は x % y と同じ。

x.remainder(y) は x を y で割った余りを返し、得られる値の符号は
「x」の符号と一致するとのこと。

では、ちょっと検証。

#remainderメソッドによる割り算
p 10.remainder(3.5)   #=>3.0
p 10.remainder(-3.5)  #=>3.0
p -10.remainder(3.5)  #=>-3.0
p -10.remainder(-3.5) #=>-3.0

#moduloメソッドによる割り算
p 10.modulo(3.5)     #=>3.0
p 10.modulo(-3.5)    #=>-0.5
p -10.modulo(3.5)    #=>0.5
p -10.modulo(-3.5)   #=>-3.0

x,y どちらともがプラスの時以外は結果が違いました。

この違いってのはどこから生まれるのかなーって考えてみたんですが、

やはり、remainderメソッドで得られる値の符号は「x」の符号と一致する
ってところですかね。

あと、 x.remainder(y)で返される余りは x の符号と一致する値と指定されていて、
x % y で返される余りは特に指定はないと思っていたんですが、

divmodメソッドの説明をよくみたら、

余りは y の符号に一致する符号を持った値となる。
また、余りは「 x % y 」の結果と同じ。

ということは、x % y で返される余りっていうのは、 y の符号と一致する値って
指定されているんですかね。

つまりは、
x.remaidner(y)で返される余りと
「 x % y 」(x.divmod(y))で返される余りの違いというのは、
x.remainder(y)で返される余りは x の符号と一致する値
x % y (x.divmod(y))で返される余りは y の符号と一致する値
ということですかね。

まとめなはずなのに、よくわかないことに・・・

勉強したことをだらだらと書いて、書くことによって、
より理解するのが目的だからいいかな・・・

ということで、数値クラスの余りについてのまとめでした。