四捨五入などの方法で整数へ変換する

広告

Floatクラスの数値を「to_i」メソッドを使ってIntegerクラスの数値に変換した場合、小数点以下は切り捨てられます。今回は他の変換方法を試してみます。

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

round

「round」メソッドは四捨五入して整数に丸めます。「1.1」は「1」へ「1.7」は「2」へ「-1.2」は「-1」へ「-1.7」は「-2」へ変換されます。中央値の「0.5」は「1」へ「-0.5」は「-1」へ変換されます。

実際の使い方は次のようになります。

num = 10.3.round

この場合は変数「num」には10が格納されます。

次に小数点以下を大きい方の整数へ変換する方法です。Numericクラスで用意されている「ceil」メソッドを使います。

ceil

「ceil」メソッドは大きい方の整数に丸めます。「1.1」や「1.7」は「2」へ「-1.2」や「-1.7」は「-1」へ変換されます。

実際の使い方は次のようになります。

num = 10.3.ceil

この場合は変数「num」には11が格納されます。

次に小数点以下を小さい方の整数へ変換する方法です。Numericクラスで用意されている「floor」メソッドを使います。

floor

「floor」メソッドは小さい方の整数に丸めます。「1.1」や「1.7」は「1」へ「-1.2」や「-1.7」は「-2」へ変換されます。

実際の使い方は次のようになります。

num = 10.3.floor

この場合は変数「num」には10が格納されます。

サンプルプログラム

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

LibraryNum3.rb

#! ruby -Ks

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

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")

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

四捨五入などで変換する

( Written by Tatsuo Ikura )