可以使用双精度来表示64位数而不会损失精度

Kop*_*Kop 6 c floating-point double lua

我想使用lua(内部仅使用双精度)来表示一个整数,该整数不能在0到2 ^ 64-1之间出现舍入误差,否则会发生可怕的事情.

有可能这样做吗?

stu*_*ith 14

没有

必须使用64位双精度的至少一些位来表示指数(二进制点的位置),因此实际数量可用的位数少于64位.所以不,64位双精度不能代表64位整数的所有值(反之亦然).

  • 即使是不切实际的解决方案也可能不起作用 - 例如,如果在Lua中处理,则信号NaN(SNaN)值可能会触发异常(不知道这是否属实 - 但它可能). (2认同)

小智 5

即使你对64位类型的问题得到了一些很好的答案,你仍然可能需要一个实际的解决方案来解决你的具体问题.我所知道的最可靠的解决方案是使用LNUM补丁(也称为Lua整数补丁)构建Lua 5.1,可以从LuaForge下载.如果您不打算从C源构建Lua,那么至少有一个纯Lua库可以处理64位有符号整数 - 请参阅Lua-users wiki.