为什么会出现在结果的差异?
-
22-09-2019 - |
题
如果我申请比奈式和递推公式求出的Fibonaci系列,存在结果的差异。为什么呢?
基本上我是一名学生,这是我们的任务落实斐波纳契数列。因此,虽然使我遇到这种形势下应运而生的实验。
在预先感谢
解决方案
使用整数运算生成的斐波纳契数。的比奈公式使用浮点运算。浮点计算将始终具有这些小的不准确因为不是每个实数可以精确地表示。
具体而言,在SQL Server的8字节float
仅具有 15-位尾数。它不能是任何大于15个小数点更精确。并非巧合的是,您所看到的错误发生在第15位。我会大胆地猜测低于70号是准确的,因为它们是一个float
的精度限度之内。
在换句话说,这种现象是设计。还有就是精度可以用浮点运算达到了极限,你打它。为了点到为止,你必须使用一个任意精度数学函数库,我不知道在SQL Server环境中的任何可用的(尽管这并不一定意味着它们不存在)。
P.S。递归是生成Fibonacci数,的非常低效的方法尤其在数据库内。如果这是一个多学术锻炼然后我建议切换到迭代求解。
不隶属于 StackOverflow