fibonaciシリーズを見つけるためにBinetFormulaとRecursiveFormulaを適用すると、結果に不一致が生じます。なんで?
基本的に私は学生であり、フィボナッチ数列を実装するのが私たちの任務です。それで、実験をしている間、私はこの状況に出くわしました。
前もって感謝します
fibonaciシリーズを見つけるためにBinetFormulaとRecursiveFormulaを適用すると、結果に不一致が生じます。なんで?
基本的に私は学生であり、フィボナッチ数列を実装するのが私たちの任務です。それで、実験をしている間、私はこの状況に出くわしました。
前もって感謝します
フィボナッチ数は、整数演算を使用して生成されます。Binet 式は、浮動小数点演算を使用します。すべての実数を正確に表現できるわけではないため、浮動小数点の計算には常にこれらの小さな誤差があります。
具体的には、SQL Server の 8 バイトには15 桁の仮数float
しかありません。小数点以下 15 桁より正確にすることはできません。偶然ではありませんが、表示されているエラーは 15 桁目で発生しています。70 未満の数値は精度の限界内にあるため、正確であると推測する危険があります。float
つまり、この動作は仕様によるものです。浮動小数点演算で達成できる精度には限界があり、あなたはそれに達しています。それを超えるには、任意精度の数学ライブラリを使用する必要がありますが、SQL Server 環境内で利用できるものを私は知りません (ただし、必ずしもそれらが存在しないというわけではありません)。
PS 再帰は、特にデータベース内でフィボナッチ数を生成する非常に非効率的な方法です。これが学術的な演習以上のものである場合は、反復ソリューションに切り替えることをお勧めします。