はじめに
Rubyで小数点以下の記述を扱うときにこの記事を見てください。
小数点以下の入力を受け取る。
こちらのメソッドは Integer クラスではなく、 Float クラスになります。
入力
1.5
input = gets.to_f #1.5
切り捨て
小数点の切り捨てを行う場合は、Float クラスの floor メソッドを使用します。
1.4.floor # 1
1.5.floor # 1
-1.4.floor # -2
-1.5.floor # -2
小数点以下 N 桁の切り捨て
Float クラスの floor メソッドでは、小数点以下の桁数は指定できません。そのため、数値を一度 BigDecimal に変換したのち、floor メソッドを指定します。
floor メソッドの引数には小数点以下の桁数を指定します。
BigDecimal のオブジェクトを生成するときは、引数にStringクラスを指定しなければなりません。
to_s メソッドで Float を String に変換しています。最後に to_f で Float に戻しています。
require 'bigdecimal'
BigDecimal(1.23456.to_s).floor(2).to_f # 1.24
BigDecimal(1.23456.to_s).floor(3).to_f # 1.234
切り上げ
小数点の切り上げを行う場合は、Floatクラスのceilメソッドを使用します。
1.4.ceil # 2
1.5.ceil # 2
-1.4.ceil # -1
-1.5.ceil # -1
小数点以下 N 桁の切り上げ
require 'bigdecimal'
BigDecimal((1.23456).to_s).ceil(2).to_f # 1.24
BigDecimal((1.23456).to_s).ceil(3).to_f # 1.235
四捨五入
数値を四捨五入する場合は、 roundメソッドを使用します。
1.4.round # 1
1.5.round # 2
-1.4.round # -1
-1.5.round # -2
小数点以下 N 桁の四捨五入
1.23456.round(2) # 1.23
1.23456.round(3) # 1.235
123456.round(-2) # 123500
123456.round(-3) # 123000
終わりに
プログラムはメソッド一つで記述が狂います。
小数点が絡んでくるプログラムは特に厄介なので、早めにマスターしましょう!