Julia 计算斐波那契数的奇怪结果

Julia 计算斐波那契数的奇怪结果,julia,Julia,我编写了一个小程序,以动态方式高效地计算斐波那契数: function fib3(n) if n < 2 return n else a = 0 b = 1 c = 0 for i=2:n c = a + b a = b b = c end return b end end for n

我编写了一个小程序,以动态方式高效地计算斐波那契数:

function fib3(n)
    if n < 2
        return n
    else
        a = 0
        b = 1
        c = 0
        for i=2:n
            c = a + b
            a = b
            b = c
        end
        return b
    end
end
for n=1:110
    println(n,"\t",fib3(n))
end
有什么问题?与类型有关的内容?

尝试在“最小和最大可表示值”下找到适当的范围:

显然,您的安装是64位的,正如该页面所说,默认情况下,文本是Int64,当发生溢出时,您会观察到“环绕行为”。换句话说,46600466103735530309+7540113804746346429超出了有符号64位整数(2)表示的最大值⁶³-1)因此序列中的下一个数字显示为负数。这仍然是一个斐波那契数,但模为2⁶⁴ 并环绕到负域。

尝试在“最小和最大可表示值”下找到合适的范围:


显然,您的安装是64位的,正如该页面所说,默认情况下,文本是Int64,当发生溢出时,您会观察到“环绕行为”。换句话说,46600466103735530309+7540113804746346429超出了有符号64位整数(2)表示的最大值⁶³-1)因此序列中的下一个数字显示为负数。这仍然是一个斐波那契数,但模为2⁶⁴ 如果要计算大整数,请使用
BigInt
s。如果要计算大整数,请使用
BigInt
s。
90  2880067194370816120
91  4660046610375530309
92  7540113804746346429
93  -6246583658587674878
94  1293530146158671551
95  -4953053512429003327
96  -3659523366270331776
97  -8612576878699335103
98  6174643828739884737
99  -2437933049959450366
100 3736710778780434371