c - Lua - 检测整数

标签 c lua

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/

相关文章:

c++ - 使用 MINGW 在窗口应用程序中抑制系统 ("command") 控制台窗口

c++ - 如何创建一个带有可变数量参数的模板函数,将参数传递给对象的正确构造函数?

.net - 用于协程实现的 CPS 编译器

c++ - 如何从 C++ 验证 Lua 表键

java - Lua 与 Java 中的递归

c - C 中的 SHA1 错误实现

c - 从C中的字符串中提取所有N位数字

c++ - 如何使用 OpenSSL API 从其 PEM 格式字符串中读取 RSA 公钥?

c - 如果字符串中间出现空字符怎么办?

lua - 为什么短调用形式不适用于 Lua 5.3 中的表?