1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rubyで小数点以下の扱い方。

Posted at

はじめに

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

終わりに

プログラムはメソッド一つで記述が狂います。
小数点が絡んでくるプログラムは特に厄介なので、早めにマスターしましょう!

1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?