Ruby の場合、変数に型という考え方はなく、全てオブジェクトとして表現される。
とは言いつつ、Numeric クラスには、整数型的なものと浮動小数点型的なものがある。この浮動小数点数は、C 言語で言うところの、double として扱われており、精度は環境に依存する。
f1 = "0.1" f2 = "0.000000000000001" f3 = "0.0000000000000001" puts "#{f1} + #{f2} = #{f1.to_f + f2.to_f}" puts "#{f1} + #{f3} = #{f1.to_f + f3.to_f}" f4 = "1.0000101" f5 = "1.0000100" puts "#{f4} - #{f5} = #{f4.to_f - f5.to_f}" puts "#{f4} + #{f5} = #{f4.to_f + f5.to_f}" f6 = 1000000.0 f7 = 0.000001 n = 0 while n < 1000000 f6 += f7 n += 1 end puts f6
バイナリサーチを使って方程式を解く。例題は、「x5 - 10x4 + 25x3 + 40x2 + 200x - 500 = 0」
def func( x ) a = (x * x * x * x * x) - (10.0 * x * x * x * x) + (25.0 * x * x * x) + (40.0 * x * x) + (200.0 * x) - 500.0 return a end def binarySearch epsilon = 0.00001 left = 1.0 right = 3.0 while ((right - left).abs > epsilon) && ((func(left)).abs > epsilon) mid = (left + right) / 2.0 if func(left) * func(mid) >= 0.0 left = mid else right = mid end end return left end d = binarySearch puts "方程式の解は #{d}. その時の func(x)は #{func(d)} です"