我正在处理我无法完成的大数字。使用Lua的标准数学库,似乎没有方便的方法来保持精度超过某些内部限制。我还看到有几个库可以加载来处理大数字:

  1. http://oss.digirati.com.br/luabignum/
  2. http://www.tc.umn.edu/~ringx004/ MAPM-main.html中
  3. http://lua-users.org/lists/ lua-l / 2002-02 / msg00312.html (可能与#2相同)
  4. http://www.gammon.com.au/scripts/ doc.php?general = lua_bc (但我找不到任何来源)
  5. 此外,C中有许多图书馆可以调用来自Lua,如果绑定在哪里建立。

    您是否有过使用这些库中的一个或多个的经验?

有帮助吗?

解决方案

Luiz Figueiredo的 lmapm图书馆 Lua语言的作者。

其他提示

使用 lbc 代替lmapm会更容易,因为lbc是自包含的。

require"bc"
s=bc.pow(2,1000):tostring()
z=0
for i=1,#s do
        z=z+s:byte(i)-("0"):byte(1)
end
print(z)

我使用Norman Ramsey的建议解决Project Euler问题 MAMP 您的C编译器可以找到它的某个地方。我把libmapm.a放在/usr/local/lib/中。接下来m_apm.hm_apm_lc.h转到/usr/local/include/

  • lmamp 需要的makefile被改为Lua和MAMP库的正确位置。对我来说,这意味着取消注释LUALUAINCLUALIBLUABIN的第二个声明,并编辑MAMP的声明。

  • 最后,mapm.so需要放在Lua找到的地方。我把它放在/usr/local/lib/lua/5.1/

  • 谢谢大家的建议!

    我无法回答,但我会添加 LGMP ,GMP绑定。没用过。

    不是我的专业领域,但我希望GNU多精度算术库在这里非常标准,不是吗?

    虽然不是任意精度,但是 Lua decNumber ,Lua 5.1 IBM decNumber的包装器实现了所提出的通用十进制算术标准IEEE 754r。它具有Lua 5.1算术运算符和更多,完全控制舍入模式,工作精度高达69位十进制数。

    许可以下: CC-BY-SA归因
    不隶属于 StackOverflow
    scroll top