Lua - 检测整数

Lua 的行为如下所示:

print( 1 ) -- 输出 1
print( 1.0 ) -- 输出 1.0

由于 Lua 使用 lua_Number 作为所有数字类型的浮点值(即整数和实数),我猜测它以某种方式跟踪数字值的实际性质,否则 print( 1 ) 会输出 1.0,因为在某个时候将 1 强制转换为 lua_Number 时丢失了 1 是整数的信息。

在 Lua 5.3.2 的 C API 中,有没有一种方法可以检测 lua_Number 最初是整数还是实数呢?

假设我想编写一个原生函数,期望整数或实数。当弹出参数时,我要怎么知道给定的值是 1 还是 1.0

谢谢。

PS:我已经看过了这个答案:测试 Lua 数字是整数还是浮点数,但它并没有解决我的问题,因为检查 number == (int) number 是否成立会导致任何实数(如 N.0)都被视为整数。

点赞
用户189205
用户189205

Lua 5.3 使用 lua_Number(默认为 double)表示浮点数,使用 lua_Integer(默认为 long long)表示整数。之前的版本只有一种浮点类型。API 提供了函数 lua_isinteger 来确定一个值是否表示为整数。

2016-03-17 13:57:05