我正在用比奈公式计算斐波那契数,但我在用红宝石除法时遇到了麻烦。我尝试将数字转换为 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
为什么前两个例子失败了,但后者给了我想要的东西?这真气人!