[英]Lua C api: handling large numbers
我在代碼中處理了皮秒(數字> 10 ^ 12)。
將數據傳遞給Lua的C代碼(atime和eventid均為size_t類型)
lua_getglobal ( luactx, "timer_callback" );
lua_pushunsigned ( luactx, atime );
lua_pushunsigned ( luactx, eventid );
lua_pcall ( luactx, 2, 0, 0 );
Lua功能
function timer_callback(time, eventid)
if eventid == TX_CLOCK then
out_log(tostring(time)) --result is random garbage
set_callback(time + 1000000000000, TX_CLOCK)
return
end
end
我嘗試使用lua_pushnumber,但結果是lua我得到了負數。
從5.3開始,Lua支持lua_Integer
,默認情況下為64位。 從參考手冊中 :
lua_Integer
typedef ... lua_Integer;
Lua中的整數類型。
默認情況下,此類型為long long(通常是64位的兩個補碼整數),但是可以將其更改為long或int,通常是32位的兩個補碼整數。 (請參見luaconf.h中的LUA_INT。)Lua還定義了常數LUA_MININTEGER和LUA_MAXINTEGER,並帶有適合該類型的最小值和最大值。
通過編輯luaconf.h
可以很容易地將Lua 5.2 lua強制使用其他數字類型。 數字類型定義為LUA_NUMBER
。
對於lua 5.1,您可以安裝lnum補丁,它將更改整數類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.