如果我应用比内公式和递归公式来查找斐波那契数列,则结果存在差异。为什么?
基本上我是一名学生,实现斐波那契数列是我们的任务。因此,在进行实验时,我遇到了这种情况。
提前致谢
如果我应用比内公式和递归公式来查找斐波那契数列,则结果存在差异。为什么?
基本上我是一名学生,实现斐波那契数列是我们的任务。因此,在进行实验时,我遇到了这种情况。
提前致谢
斐波那契数是使用整数算术生成的。Binet 公式使用浮点运算。浮点计算总是会有这些小的不准确之处,因为不是每个实数都可以准确表示。
具体来说,SQL Server 中的 8 字节float
只有15 位尾数。它不能比小数点后 15 位更精确。并非巧合的是,您看到的错误发生在第 15 位。我会冒险猜测 70 以下的数字是准确的,因为它们在 a 的精度范围内float
。
换句话说,这种行为是设计使然。使用浮点数学可以达到的精度是有限的,而且你已经达到了。为了超越这一点,您必须使用任意精度的数学库,而且我不知道 SQL Server 环境中有任何可用的库(尽管这并不一定意味着它们不存在)。
PS 递归是一种非常低效的生成斐波那契数的方法,尤其是在数据库中。如果这不仅仅是一个学术练习,那么我建议切换到迭代解决方案。