我在沒有專用浮點硬件的CPU上運行Lua,具體取決於SW仿真。Lua浮點操作
從luaopt.h我可以看到一些宏被設置爲double
,但它沒有清楚地說明何時使用浮點數並且有點難以跟蹤它。
如果我的腳本做簡單的東西,如:
a=0
a=a+1
for...
將涉及在任何級別的浮點運算?
如果沒問題,但將宏更改爲long
有什麼好處?
(我試過,當然,但沒有工作....)(按照默認配置)浮點
我在沒有專用浮點硬件的CPU上運行Lua,具體取決於SW仿真。Lua浮點操作
從luaopt.h我可以看到一些宏被設置爲double
,但它沒有清楚地說明何時使用浮點數並且有點難以跟蹤它。
如果我的腳本做簡單的東西,如:
a=0
a=a+1
for...
將涉及在任何級別的浮點運算?
如果沒問題,但將宏更改爲long
有什麼好處?
(我試過,當然,但沒有工作....)(按照默認配置)浮點
Lua中所有數字的動作。在浮點和整數之間沒有區別,所有的值都只是數字。
實際C
類型用來存儲一個Lua數目被設置在luaconf.h,並且其既允許甚至實際更改到合適的積分類型。您首先將LUA_NUMBER
從double
更改爲int
,long
或可能ptrdiff_t
。然後你會發現你需要調整控制字符串和數字之間轉換的相關宏。而且,當然,由於math.sin()
和它的朋友和鄰居對於整數不是特別有用,所以您可能需要消除大部分或全部基本庫math
庫。
結果將是一個Lua解釋器,其中所有數字都是整數。該語言仍然允許您鍵入3.14
,但它將被存儲爲3
。您的代碼可能不會完全移植到使用標準配置構建的Lua解釋器中,因爲大量的Lua代碼偶然會假定允許使用浮點運算,並且請記住,由於字節代碼將存儲您編譯的字節碼,因此它們肯定不兼容數字爲LUA_NUMBER
。
Lua 5.3引入了整數。 – lhf
感謝您的澄清。
總結,對於具有微小的嵌入式CPU或其他任何東西沒有FPU其他讀者:
在C語言中使用整數運算,但在浮點數加,如果有周圍也沒有路。 i = i + 1 doe s不涉及浮點操作。
在Lua你必須決定。所有float或全部int。除非您完全移除對浮點數的支持,否則i = i + 1將涉及浮點數加法操作。
不瞭解Lua的內部,後者似乎有點缺點。無論如何,它仍然是我的測試快,所以這到目前爲止不是一個nogo。
如果上述不正確,請諮詢。
1月
你是在談論'luaconf.h'中的LUA_NUMBER嗎? –