我用binet的公式計算斐波納契數字,並且在紅寶石分解時遇到了問題。我已經嘗試鑄造數字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例失敗,但後者給我我想要什麼?這真令人氣憤!
在另一方面,比奈的公式只能實際上可用於小值,由於彩車的精度限制。 – Antimony
這是正確的,我會說5是一個非常小的數字:) – ctilley79
我想我可以使用BigDecimal,但 – ctilley79