ceil, floor メソッドの覚え方

へりくつですが、(間違った考え方をしてしまって)こう思って頭が痛くなったっていう報告です。

目次

プラスの少数なら分かりやすいのだが、マイナスになるとどういうこと・・・

小数点切り上げの ceil メソッドと小数点切り捨ての floor メソッドについてです。例えば ceil メソッドの場合ですけど、プラスの小数点の場合は分かりやすいのです。

puts 1.1.ceil
puts 1.9.ceil
2
2

小数点を繰り上げて 2 になるんですよね。繰り上げる=+1する。ですよね。でも、これがマイナスになると、

puts -1.1.ceil
puts -1.9.ceil
-1
-1

になります。マイナスならマイナスらしく、マイナスの方向に繰り上げる=-1足す。つまり、-1.1 なら-1+(-1) で-2 ちゃうんかい?ってとらえてしまったのです。

ceil メソッドは「大きい整数に丸める」んですよ

ということを学びました(後から)。二次方程式の x 軸的に考えてみると以下ですよね。

                     (y軸: 大)
                          |
(小)------------------------------------------> (x軸: 大)
      -4   -3   -2   -1   0  1   2   3   4
                          |
                        (小)
                          

だから、-1.1 の場合、-2-1 の間にいて、 -1 の方が大きい数なんですね。だから答えが-1 に変換されるわけです。なるほどー!

切り捨ての floor メソッドはどうなのよ?

puts 1.1.floor
puts 1.9.floor
1
1

小数点を切り捨てるから 1 になるんですよね。でも、これがマイナスになると、

puts -1.1.floor
puts -1.9.floor
-2
-2

になります。小数点を切り捨てるのなら -1 ちゃうんかい、と思ってしまいました。

floor メソッドは「小さい整数に丸める」んですよ

もう一度、二次方程式の x 軸的に考えてみます。

                     (y軸: 大)
                          |
(小)------------------------------------------> (x軸: 大)
      -4   -3   -2   -1   0  1   2   3   4
                          |
                        (小)
                          

とあって、-1.1 の場合、-2-1 の間にいて、 -2 の方が小さい数なんですね。だから答えが-2 に変換されるわけです。なるほどー!