在我的 C++ 程序中,我需要知道 Lua 变量是整数还是浮点数。C API 提供lua_isnumber()
但此功能不区分int/float/double
.
到目前为止,我已经使用以下方法解决了这个问题modf()
:
if (lua_isnumber(luaCtx, -1)) // int / unsigned int / float:
{
luaVarName = lua_tostring(luaCtx, -2);
double n = static_cast<double>(lua_tonumber(luaCtx, -1));
// Figure out if int or float:
double fractPart, intPart;
fractPart = modf(n, &intPart);
if (fractPart != 0.0)
{
luaVarType = ScriptVar::TypeTag::Float;
luaVarData.asFloat = static_cast<float>(n);
}
else
{
luaVarType = ScriptVar::TypeTag::Integer;
luaVarData.asInteger = static_cast<int>(n);
}
}
Lua API 是否提供了一种更精确地推断变量类型的方法?