rubyでの数値の切り捨て、四捨五入は簡単。
小数点以下や整数、両方とも簡単にできる。
四捨五入
round関数を使う
小数を整数に四捨五入する場合
irb(main):021:0> (4.67).round => 5
分かりやすく、小数をカッコでくくったけど、カッコなしでも大丈夫
irb(main):022:0> 4.67.round => 5
round関数に引数を与えてあげると好きな桁で四捨五入できる。
先ほどの4.67で、小数点第一桁で四捨五入
irb(main):024:0> 4.67.round(1) => 4.7
小数点第二桁で四捨五入
irb(main):027:0> 4.678.round(2) => 4.68
引数にマイナスの値を指定してあげると整数の好きな位置で四捨五入できる。
1680を100の位で四捨五入する場合
irb(main):028:0> 1680.round(-2) => 1700
1680を1000の位で四捨五入する場合
irb(main):029:0> 1680.round(-3) => 2000
切り捨て
小数を整数に切り捨てする。
irb(main):030:0> 4.67.floor => 4
round関数と同じく、引数で切り捨てする桁を決めることができる。
小数点第一桁で切り捨て
irb(main):032:0> 4.67.floor(1) => 4.6
小数点第二桁で切り捨て
irb(main):035:0> 4.678.floor(2) => 4.67
floorもround関数と同じく、引数にマイナスの値を指定してあげると整数の好きな位置で切り捨てできる。
1680を100の位で切り捨てする場合
irb(main):036:0> 1680.floor(-2) => 1600
1680を1000の位で切り捨てする場合
irb(main):037:0> 1680.floor(-3) => 1000
切り上げ
小数を整数に切り上げする。
ceil関数を使う。
irb(main):004:0> 1.5.ceil => 2 irb(main):005:0> 3.222.ceil => 4 irb(main):006:0> a=1.5 => 1.5 irb(main):007:0> a.ceil => 2 irb(main):008:0>
ちなみに3/2に対してceil関数を使うと2になりそうだが、結果は1となる。
これは、3/2はデフォルトで整数1となるので、1.ceilとなり、結果は1となる。
irb(main):008:0> 3/2.ceil => 1
3/2を1.5とするには、
3/2をto_fで小数点型にして、カッコでくくりceil関数を使う
カッコがないと1になっちゃう
irb(main):011:0> 3/2.to_f => 1.5 irb(main):012:0> 3/2.to_f.ceil => 1 irb(main):013:0> (3/2.to_f).ceil => 2 irb(main):014:0>