Lua 的行为如下:
print( 1 ) -- prints 1
print( 1.0 ) -- prints 1.0
由于Lua使用lua_Number
,它是一个浮点值(浮点或 double ),对于所有数字类型(即整数和实数),我猜它以某种方式跟踪实际的数字值的性质,否则 print( 1 )
将打印 1.0
,因为 1
是整数的信息在转换时会丢失1 到 Lua 代码中的某个位置的 lua_Number
。
有没有办法使用Lua 5.3.2的C API来检测lua_Number
最初是整数还是实数?
假设我想编写一个 native 函数,需要整数或实数。在弹出参数时,我如何知道给定值是 1
还是 1.0
?
谢谢。
PS:我已经看到这个答案:Test if Lua number is integer or float但这并不能解决我的问题,因为检查 number == (int) number
是否表明任何像 N.0
这样的实数都是整数。
最佳答案
Lua 5.3使用lua_Number
(默认:double
)表示 float 和lua_Integer
(默认:long long
) code>) 为整数。以前的版本只有浮点类型。 API 具有函数 lua_isinteger
来确定值是否表示为整数。
关于c - Lua - 检测整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062292/