如何获得Lua支持的整数范围?

时间:2018-08-03 02:58:23

标签: lua

我想知道是否有可能在Lua中获得最小/最大数量。

例如,在C ++中,我们有以下内容

displacement

Lua中有类似的东西吗?

3 个答案:

答案 0 :(得分:3)

math.minmath.max,它们各自获取值列表,并返回最小值和最大值。

(我意识到我可能误解了这个问题,因为它是关于整数限制,而不是比较)。有math.minintegermath.maxinteger返回“一个具有最小/最大值的整数”。

答案 1 :(得分:2)

正如另一个答案所解释的那样,此功能在标准Lua中不是开箱即用的。但是,使用您自己的Lua-C模块很容易实现此功能。

test.cpp

#include <limits>
#include <lua.hpp>

static const luaL_Reg limits_lib[] = {
    {nullptr, nullptr} // sentinel
};

LUAMOD_API int luaopen_limits(lua_State *L) {
    luaL_newlib(L, limits_lib);
    lua_pushnumber(L, std::numeric_limits<lua_Number>::max());
    lua_setfield(L, -2, "maxnumber");
    lua_pushnumber(L, std::numeric_limits<lua_Number>::min());
    lua_setfield(L, -2, "minnumber");
    return 1;
}

test.lua

local limits = require("limits")
print(limits.maxnumber)
print(limits.minnumber)

示例调用:

$ clang++ -Wall -Wextra -Wpedantic -I /usr/include/lua5.2 -shared -fPIC test.cpp -o limits.so -llua5.2
$ lua5.2 test.lua
1.7976931348623e+308
2.2250738585072e-308

答案 2 :(得分:1)

在Lua 5.3之前,所有数字默认都是双精度的,因此可以表示最大为2 ^ 52的整数。