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 の符号と一致する値
ということですかね。
まとめなはずなのに、よくわかないことに・・・
勉強したことをだらだらと書いて、書くことによって、
より理解するのが目的だからいいかな・・・
ということで、数値クラスの余りについてのまとめでした。