LoginSignup
0
0

【Ruby】切り上げ、切り捨てメソッドまとめ

Last updated at Posted at 2023-12-17

はじめに

Ruby silver認定試験の勉強をしていた際に、小数点系のメソッドで気づきがあったのでまとめてみました。

round

使う機会が割と多いのではないでしょうか。
挙動は以下の通り。
・自身から最も近い整数のうち最大のものを返す
・最も近い整数が2つある場合は0から遠い方を返す(いわゆる四捨五入ですね)

> 1.9.round
=> 2
> 1.4.round
=> 1
> 1.5.round
=> 2
> -1.4.round
=> -1
> -1.5.round
=> -2

・引数に数値を渡すことで、引数の小数点の位を四捨五入します

> 1.15.round
=> 1
> 1.15.round(1)
=> 1.2

half:オプションで最も近い整数が2つある場合の丸め方を指定できます

> 2.5.round(half: :up)
=> 3
> 2.5.round(half: :even)
=> 2
> 2.5.round(half: :down)
=> 2

:up 0から遠い方に丸められます。
:even もっとも近い偶数に丸められます。
:down 0に近い方に丸められます。
rubyリファレンスより

floor

続いてfloorメソッド
挙動は以下の通り

・それ自身より小さな整数のうち最大のものを返します(ここポイント)

> 1.9.floor
=> 1
> 1.1.floor
=> 1
> -1.9.floor
=> -2
> -1.1.floor
=> -2

初歩的ですが、自分は切り捨てされるメソッドとして認識していたため、
負の数の場合も切り捨てされると思っていました。
レシーバーが負の数の場合「それ自身より小さな整数のうち最大のもの」という条件だと
(0から遠い方に)切り上げになるんですね。

ceil

こちらはfloorメソッドの逆になります。
・それ自身より大きな整数のうち最小のものを返します

> 1.9.ceil
=> 2
> 1.1.ceil
=> 2
> -1.1.ceil
=> -1
> -1.9.ceil
=> -1

floorメソッドと同じパターンで、レシーバーが正の数の場合と負の数の場合で挙動が異なりますね。

truncate

・それ自身と0の間にある整数のうち最も近いものを返します(小数点以下を切り捨て)

> 1.9.truncate
=> 1
> 1.1.truncate
=> 1
> -1.9.truncate
=> -1
> -1.1.truncate
=> -1

引数で切り捨てる桁数を指定でき、-(マイナス)を指定すると整数部分の桁を切り捨てます。

> 1.19.truncate(1)
=> 1.1
> 12.34.truncate(1)
=> 12.3
> 12.34.truncate(-1)
=> 10

abs(おまけ)

切り上げ切り捨て系メソッドではありませんが、
同じシーンで使われることもあるかと思いますので記載しておきます。

・自身の絶対値を返します

> -1.abs
=> 1
> 1.abs
=> 1
> -123.abs
=> 123
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0