1

我目前正在研究一个对 64 位整数执行计算的 Lua 项目。我的第一反应是切换LUA_NUMBERint64_tin luaconf.h。在那之后没有用,我发现了LNUM补丁,它似乎提供了我需要的功能。

我通过运行使用 LNUM 补丁重建了 lua

补丁 < ../../lua512_numbers.patch

运行此程序并重新运行我的代码后,我仍然无法对 2^62 + 1 这样大的数字执行数学运算。(我也无法通过 lnum 补丁附带的 test.lua)。

我用以下每种方式切换了我的 luaconf.h - 但它没有任何区别。_LNUM 打印出双倍。

注意:我已经在 lua 5.1.2、5.1.3、5.1.5 中尝试过这个

#define LNUM_FLOAT
#define LNUM_INT64


# define LUA_INTEGER    long long
# ifdef _MSC_VER
#  define lua_str2ul    _strtoui64
# else
#  define lua_str2ul    strtoull
# endif
# define LUA_INTEGER_SCAN "%lld"
# define LUA_INTEGER_FMT "%lld"
# define LUA_INTEGER_MAX 0x7fffffffffffffffLL       /* 2^63-1 */
# define LUA_INTEGER_MIN (-LUA_INTEGER_MAX - 1LL)   /* -2^63 */


# define LUA_NUMBER         float
# define LUA_NUMBER_SCAN    "%f"
# define LUA_NUMBER_FMT     "%g"

并且还尝试直接设置LUA_NUMBERLUA_INTEGERLNUM_FLOAT& LNUM_INT64

我想我误解了这个补丁/lua 的工作方式,如果有任何关于如何使用未签名或签名的 INT64 的指导,我将不胜感激。

4

0 回答 0