0

我正在尝试打印 Fibonacci sequence Benet's formula,但是我的值不正确。我在这里错过了什么吗?

import math

def F(n):
    return ((1+math.sqrt(5))**n-(1-math.sqrt(5))**n)/(2**n*math.sqrt(5))

for x in range(0, 100):
    print(F(x))

我得到的结果是:

0.0
1.0
1.0
2.0
3.0000000000000004
5.000000000000001
8.000000000000002 --- 这里开始出错
13.000000000000002
21.000000000000004
...

它一定与精度有关。然而,使用cmathmath不是似乎也没有帮助。

任何帮助,将不胜感激。

4

1 回答 1

3

如果您担心结果,则返回结果int,这只是您如何表示浮点数的人工制品。

import math

def F(n):
    return int(((1+math.sqrt(5))**n-(1-math.sqrt(5))**n)/(2**n*math.sqrt(5)))

for x in range(0, 15):
    print F(x)

输出

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
于 2014-09-07T15:27:15.797 回答