【发布时间】:2016-07-03 21:41:37
【问题描述】:
Lua 的行为如下:
print( 1 ) -- prints 1
print( 1.0 ) -- prints 1.0
由于 Lua 使用 lua_Number,它是一个浮点值(float 或 double),对于所有数字类型(即整数和实数),我猜它以某种方式跟踪数字值的实际性质,否则print( 1 ) 将打印1.0,因为在Lua 代码中的某个点将1 转换为lua_Number 时,1 是整数的信息会丢失。
有没有办法使用 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 这样的实数都是整数。
【问题讨论】: