4

所以关于 Lua 的一个非常酷的事情是你可以让它使用浮点数而不是双精度数。luaconf.h 中的 LUA_NUMBER。它对我很有用!

但我一直想知道 lua 是如何处理整数的。在 js 和 as3 中,我知道整数也仍然只是“数字”。如果数字总是以 53 位尾数加倍,这非常有效,因为人们期望的整数中的 32 位被很好地覆盖了。现在,如果要使用 23 个尾数进行浮动,这将不再按预期工作。代码通常将整数视为 32 位,用于按位操作或打包 32 位颜色之类的东西。

所以我的问题是,如果我用“#define LUA_NUMBER float”构建,我的整数限制是 23 位吗?答案更复杂吗?如果是这样,为什么以及如何?我也从未使用过 luajit,但其他 lua 实现如何处理这个问题?

我知道我可以阅读代码,但我认为这是一个有趣的问题。而且我很懒 :) 对于我的用例,我可以假设 23 位。

4

1 回答 1

2

是的,整数仅限于数字的大小。因此,如果您使用浮点数,您将获得 24 位整数(浮点表示中有一个隐藏位)。

于 2013-06-18T15:07:16.543 回答