为什么Lua和Python因子输出不同

hys*_*hys 0 python lua

在此输入图像描述

--t.lua
function fact(n)
    if n == 0 then
        return 1
    else
        return n * fact(n-1)
    end
end

for i=1,100,1 do
    print(i,fact(i))
end
Run Code Online (Sandbox Code Playgroud)
# t.py
fact = lambda n:1 if n == 0 else n * fact(n-1)

for i in range(1, 100):
    print(i, fact(i))
Run Code Online (Sandbox Code Playgroud)

当我在Lua和Python中编写析因代码时,我发现输出是不同的.

Dmi*_*try 8

通常配置的Lua使用平台通常的双精度浮点格式来存储所有数字(这意味着所有数字类型).对于今天的大多数桌面平台,这将是64位IEEE-754格式.传统观点认为,可以安全地假设-1E15到+ 1E15范围内的整数被精确表示.为了处理Lua中的大量数字,关键词是"bignum"和"任意精确数字".您可以使用pure-Lua模块.例如(bignumlua-nums)和基于C的模块lmapm.也读这个帖子.

Python支持一种已知的"bignum"整数类型,它可以处理任意大的数字.在Python 2.5+中,此类型被调用long并与int类型分开,但解释器将自动使用更合适的类型.在Python 3.0+中,int类型已完全删除.在Python中,通常您不需要使用特殊工具来处理大量数字.