浮動小数点数を整数へ変換する

浮動小数点数を整数へ変換することができます。どのように変換するかでいくつかのメソッドが用意されています。ここでは Ruby で浮動小数点数を整数へ変換する方法を解説します。

(2022 年 10 月 13 日公開 / 2022 年 10 月 23 日更新)

小数点以下を切り捨てて整数に変換する

最初に小数点以下を切り捨てて整数に変換する方法です。 Float クラスで用意されている to_i メソッドを使います。

to_i

浮動小数点数の小数点以下を切り捨てて整数に変換します。実際には次のように使用します。

puts(4.23.to_i)  # 4
puts(4.67.to_i)  # 4
puts(-4.23.to_i) # -4
puts(-4.67.to_i) # -4

また to_i メソッドと同じ利用方法として Float クラスには truncate メソッドが用意されています。

truncate(ndigits = 0)

引数に 0 を指定するか省略した場合は to_i メソッドを使用した場合と同じです。

浮動小数点数の小数点以下を切り捨てて整数に変換します。実際には次のように使用します。

puts(4.23.truncate)  # 4
puts(4.67.truncate)  # 4
puts(-4.23.truncate) # -4
puts(-4.67.truncate) # -4

小数点以下を四捨五入して整数に変換する

小数点以下を四捨五入して整数に変換する方法です。 Float クラスで用意されている round メソッドを使います。

round(ndigits = 0)

round メソッドで引数に 0 を指定するか省略した場合、自身ともっとも近い整数に変換します。中央値の 0.5 は 1 へ -0.5 は -1 へ変換されます。実際には次のように使用します。

puts(4.23.round)   # 4
puts(4.5.round)    # 5
puts(4.67.round)   # 5
puts(-4.23.round)  # -4
puts(-4.5.round)   # -5
puts(-4.67.round)  # -5

等しいかより大きな整数の中で最小の整数に変換する

浮動小数点数を等しいかより大きな整数の中で最小の整数に変換する方法です。 Float クラスで用意されている ceil メソッドを使います。

ceil(ndigits = 0)

ceil メソッドで引数に 0 を指定するか省略した場合、自身と等しいかより大きな整数の中で最小の整数に変換します。実際には次のように使用します。

puts(4.23.ceil)  # 5
puts(4.67.ceil)  # 5
puts(-4.23.ceil) # -4
puts(-4.67.ceil) # -4

等しいかより小さな整数の中で最大の整数に変換する

浮動小数点数を等しいかより小さな整数の中で最大の整数に変換する方法です。 Float クラスで用意されている floor メソッドを使います。

floor(ndigits = 0)

floor メソッドで引数に 0 を指定するか省略した場合、自身と等しいかより小さな整数の中で最大の整数に変換します。実際には次のように使用します。

puts(4.23.floor)  # 4
puts(4.67.floor)  # 4
puts(-4.23.floor) # -5
puts(-4.67.floor) # -5
サンプルコード

では簡単なサンプルで試してみます。

# encoding: UTF-8

num1 = 1.2
num2 = 1.8
num3 = -1.3
num4 = -1.7

print(num1, ".truncate = ", num1.truncate, "\n")
print(num2, ".truncate = ", num2.truncate, "\n")
print(num3, ".truncate = ", num3.truncate, "\n")
print(num4, ".truncate = ", num4.truncate, "\n")

print(num1, ".round = ", num1.round, "\n")
print(num2, ".round = ", num2.round, "\n")
print(num3, ".round = ", num3.round, "\n")
print(num4, ".round = ", num4.round, "\n")

print(num1, ".ceil = ", num1.ceil, "\n")
print(num2, ".ceil = ", num2.ceil, "\n")
print(num3, ".ceil = ", num3.ceil, "\n")
print(num4, ".ceil = ", num4.ceil, "\n")

print(num1, ".floor = ", num1.floor, "\n")
print(num2, ".floor = ", num2.floor, "\n")
print(num3, ".floor = ", num3.floor, "\n")
print(num4, ".floor = ", num4.floor, "\n")

実行結果は次のようになります。

四捨五入などで変換する

-- --

Ruby で浮動小数点数を整数へ変換する方法を解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。