0

fibonaciシリーズを見つけるためにBinetFormulaとRecursiveFormulaを適用すると、結果に不一致が生じます。なんで?

基本的に私は学生であり、フィボナッチ数列を実装するのが私たちの任務です。それで、実験をしている間、私はこの状況に出くわしました。

前もって感謝します

4

1 に答える 1

4

フィボナッチ数は、整数演算を使用して生成されます。Binet 式は、浮動小数点演算を使用します。すべての実数を正確に表現できるわけではないため、浮動小数点の計算には常にこれらの小さな誤差があります。

具体的には、SQL Server の 8 バイトには15 桁の仮数floatしかありません。小数点以下 15 桁より正確にすることはできません。偶然ではありませんが、表示されているエラーは 15 桁目で発生しています。70 未満の数値は精度の限界内にあるため、正確であると推測する危険があります。float

つまり、この動作は仕様によるものです。浮動小数点演算で達成できる精度には限界があり、あなたはそれに達しています。それを超えるには、任意精度の数学ライブラリを使用する必要がありますが、SQL Server 環境内で利用できるものを私は知りません (ただし、必ずしもそれらが存在しないというわけではありません)。

PS 再帰は、特にデータベース内でフィボナッチ数を生成する非常に非効率的な方法です。これが学術的な演習以上のものである場合は、反復ソリューションに切り替えることをお勧めします。

于 2009-12-31T03:35:30.180 に答える