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)} です"