数値計算

ruby 数値の四捨五入、切り捨て、切り上げ

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>

-数値計算