binet の式でフィボナッチ数を計算していますが、Ruby での除算に問題があります。数字をto_fなどにキャストしようとしましたが、役に立ちませんでした。何が機能し、何が機能しないかを説明します。その理由を教えてください。
以下は動作しません
n=5
fib=(1 + sqrt(5))**n - (1-sqrt(5))**n / (2**n * sqrt(5))
puts fib #outputs 354.9257634247335 which is a bunch of garbage
私も試してみました
n=5
fib=((1 + sqrt(5))**n).to_f - ((1-sqrt(5))**n).to_f / (2**n * sqrt(5)).to_f
puts fib #outputs the exact same thing as above
しかし、次の作品
n=5
fib1=(1 + sqrt(5))**n - (1-sqrt(5))**n
fib2=(2**n * sqrt(5))
fib = fib1/fib2
puts fib.round(0) #outputs 5 which is correct
最初の 2 つの例は失敗するのに、後者は私が望むものを与えるのはなぜですか? これは腹立たしいです!