Lua留档表示Lua使用double表示数字类型的值,这允许使用浮点数正确表示所有长整数值。
然而,我在代码中看到lua_Number实际上是一个浮点数。这给了我以下警告:
warning C4244: 'argument' : conversion from 'double' to 'lua_Number', possible loss of data
为:
double fVarVal = 0.0;
lua_pushnumber( L, fVarVal );
那么Lua中如何表示类型number的值呢?浮点数还是双精度?如果他们使用浮点数,当使用整数值(如数组索引)时,这不会产生问题吗?
我正在使用Lua 5.3.2 WindowsCE。
我正在使用适用于Windows的Lua 5.3.2。
这改变了一些事情。Lua 5.3直接在Lua中添加了使用实际整数的功能。Lua一直有lua_pushinteger
函数,但在5.3中,它不会将其转换为双精度
。相反,它是一个64位整数。
当然,在Lua中,整数和浮点数看起来是一样的。大多数Lua CAPI没有太大的区别。但是如果你愿意,它可以。
在任何情况下,lua_Number
默认为双精度,所以即使在Lua 5.1/2上,整数作为浮点数也不是什么大问题。当然,lua_Integer
和lua_Number
可以根据需要进行调整。请注意,您使用的外部DLL也必须使用这些设置重新编译。