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中的类型数值是如何表示的?漂浮还是加倍?如果他们使用浮点数,那么当使用整数值(如数组索引)时,这会产生问题吗?
我使用Lua 5.3.2 for Windows CE。
答案 0 :(得分:1)
我正在使用Lua 5.3.2 for Windows。
那么改变了事情。 Lua 5.3增加了在Lua中直接使用实际整数的能力。 Lua总是有lua_pushinteger
函数,但是在5.3中,它没有将它转换为double
。它取而代之的是64位整数。
从Lua当然,整数和浮点数看起来都一样。而且大多数Lua C API并没有太大的区别。但是如果你想要它可以。
在任何情况下,lua_Number
默认为double
,因此即使在Lua 5.1 / 2上,整数浮动也不是问题。当然,lua_Integer
和lua_Number
可以根据需要进行调整。请注意,您使用的外部DLL也必须使用这些设置进行重新编译。