Lua表现如下:
print( 1 ) -- prints 1
print( 1.0 ) -- prints 1.0
由于Lua正在使用lua_Number
,这是一个浮点值(float或double),对于所有数字类型(即整数和实数),我猜它会以某种方式跟踪a的实际性质数字值,否则print( 1 )
将打印1.0
,因为在Lua代码中的某个点将{1}转换为1
时,lua_Number
为整数的信息将会丢失。
有没有办法,使用Lua 5.3.2的C API来检测lua_Number
最初是整数还是实数?
假设我想编写一个期望整数或实数的本机函数。如何在弹出参数时,如果给定值为1
或1.0
,我怎么知道?
感谢。
PS:我已经看到了这个答案:Test if Lua number is integer or float但它并没有解决我的问题,因为检查number == (int) number
是否表明任何真实的N.0
都是整数。
答案 0 :(得分:1)
Lua 5.3使用lua_Number
(默认值:double
)表示浮点数,并使用lua_Integer
(默认值:long long
)表示整数。以前的版本只有浮点类型。 API具有函数lua_isinteger
,用于确定值是否表示为整数。