Lua浮点运算

Jan*_*ten 2 lua

我在没有专用浮点硬件的CPU上运行Lua,具体取决于SW仿真.

从luaopt.h我可以看到一些宏设置为double,但它没有明确说明何时使用浮点数并且它有点难以跟踪它.

如果我的脚本做的很简单:

a=0
a=a+1
for...
Run Code Online (Sandbox Code Playgroud)

这会涉及任何级别的浮点运算吗?

如果没有那么好,那么改变宏的好处是什么long呢?

(我当然试过但是没有工作....)

RBe*_*eig 5

Lua中的所有数字操作都是以浮点形式执行的(根据默认配置).浮点和整数之间没有区别,所有值都只是数字.

C用于存储Lua编号的实际类型在luaconf.h中设置,允许甚至实际将其更改为合适的整数类型.您可以通过改变开始LUA_NUMBERdoubleint,long或者可能ptrdiff_t.然后你会发现你需要调整控制字符串和数字之间转换的相关宏.当然,您可能需要消除大部分或全部基本math库,因为math.sin()它的朋友和邻居对整数没有特别的用处.

结果将是一个Lua解释器,其中所有数字都是整数.该语言仍然允许您键入3.14,但它将被存储为3.你的代码很可能不能完全移植到使用标准配置构建的Lua解释器,因为大量的Lua代码随便假设允许浮点运算,并且记住你编译的字节代码肯定不兼容,因为字节代码会存储数字为LUA_NUMBER.