数値がフィボナッチ数列の一部であるかどうかを判断するメソッドを作成する割り当てがあります。
式に従ってください:
5z^2 + 4 または 5z^2 − 4 のいずれかが完全平方である場合に限り、正の整数 z はフィボナッチ数です。
小さい数と大きいフィボナッチ数で機能する次のメソッドを定義しましたが、なんらかの理由で、大きな非フィボナッチ数を処理するとき、特にis_fibonacci?(927372692193078999171)
. どうやらメソッドはtrue
の代わりに戻りますfalse
。他のすべては正しいように見えるので、なぜこれがうまくいかないのか、ちょっと頭を悩ませています。助言がありますか?
def is_fibonacci?(i)
bigNumber1 = Math.sqrt((5*(i**2)+4))
bigNumber2 = Math.sqrt((5*(i**2)-4))
if bigNumber1 == bigNumber1.round || bigNumber2 == bigNumber2.round
return true
else
return false
end
end