【Ruby3.x】Integer::rationalize()メソッドの使い方
rationalizeメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
rationalizeメソッドは、呼び出し元の整数値を分数形式で表現するRationalオブジェクトに変換するメソッドです。Rationalオブジェクトは、数値を分子と分母の組み合わせで厳密に表現するため、浮動小数点数(Float)で発生しがちな計算の丸め誤差を回避し、高い精度での数値計算を可能にします。
このメソッドを実行すると、対象の整数値が分子となり、分母が常に1であるRationalオブジェクトが生成されます。例えば、7.rationalizeと記述すると、結果としてRational(7, 1)というオブジェクトが返されます。これは、整数が常に「その数分の1」として分数で表現できるためです。
一般的に、rationalizeメソッドは浮動小数点数が持つわずかな誤差を考慮し、その浮動小数点数に最も近い簡単な分数を見つけるために使われます。しかし、整数は本質的に誤差を持たないため、このメソッドに許容誤差を示すepsという引数を指定しても、その引数は内部的に無視されます。そのため、Integer#rationalizeは常に、呼び出し元の整数をそのままの形で正確な分数表現に変換します。
このメソッドは、整数値を明示的にRational型に変換し、その後の計算で精度の高い分数計算を行いたい場合に役立ちます。Integer#to_rメソッドと同じ結果を返しますが、意味的に浮動小数点数のrationalizeと関連付けて理解できるため、コードの意図を明確にする用途でも利用できます。
構文(syntax)
110.rationalize
引数(parameters)
eps = 0
- eps = 0: 近似の許容誤差を指定する浮動小数点数。デフォルトは 0。
戻り値(return)
Rational
Integer#rationalize は、レシーバーである整数を分母が1の有理数(Rationalオブジェクト)に変換した結果を返します。