我想知道是否有可能在Lua中获得最小/最大数量。
例如,在C ++中,我们有以下内容
displacement
Lua中有类似的东西吗?
答案 0 :(得分:3)
有math.min和math.max,它们各自获取值列表,并返回最小值和最大值。
(我意识到我可能误解了这个问题,因为它是关于整数限制,而不是比较)。有math.mininteger和math.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的整数。