なぜ結果の不一致はありますか?
-
22-09-2019 - |
質問
私はfibonaciシリーズを見つけるためビネー式や再帰式を適用する場合は、
は、結果の不一致があります。なぜ?
基本的に私は学生ですし、それは、フィボナッチ数列を実装するために私たちの割り当てです。だから私はこのような状況に出くわした実験をしながらます。
事前に感謝します。
解決
フィボナッチ数は、整数演算を使用して生成されます。ビネー式は浮動小数点演算を使用します。すべての実数を正確に表現することができないので、浮動小数点演算は、常にこれらの小さな不正確さを持つことになります。
具体的には、SQL Serverの8バイトのfloat
が唯一持っているA 15-桁の仮数する。これははは15進ポイントよりも任意のより正確にすることはできません。偶然ではなく、あなたが見ているエラーは、15桁で発生します。私は、彼らがfloat
の精度限界の範囲内であるため、70以下の数値は、正確であることを推測をハザードでしょう。
言い換えれば、この動作は仕様です。そこには、浮動小数点演算を実現することができ精度には限界があり、そしてあなたはそれをヒットしました。それを越えて行くためには、あなたは、任意精度数学ライブラリを使用する必要があるだろう、と私は(それは必ずしも彼らが存在しないという意味ではありませんが)SQL Server環境内で使用可能な任意の認識していませんよ。
P.S。再帰が特にのデータベース内に、フィボナッチ数を生成する非常に非効率的な方法です。これは学術的な運動よりも多くの場合、私は反復解法への切り替えをお勧めします。
所属していません StackOverflow