提问者:小点点

Lua-数字是浮动还是加倍?


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。


共1个答案

匿名用户

我正在使用适用于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_Integerlua_Number可以根据需要进行调整。请注意,您使用的外部DLL也必须使用这些设置重新编译。