Lua >5.3 supports 64-bit integers, but encode_number rounds to 14 significant digits. This causes values to be unnecessarily rounded even though Lua and WASM support them.
Spin up a process using aos and add the following Handler.
Handlers.add("test", "Get-Number", function (msg)
local exampleValue = 951824235837328
ao.send({ Target = msg.From, Value = exampleValue, Data = exampleValue })
end)
Value and Data are rounded and returned as 951824235837330. If tostring() is used, the correct number (as a string) is returned.
TLDR:
Lua >5.3 supports 64-bit integers, but
encode_number
rounds to 14 significant digits. This causes values to be unnecessarily rounded even though Lua and WASM support them.Related to the PR in the original json.lua implementation here - https://github.com/rxi/json.lua/pull/42
Example:
Spin up a process using aos and add the following Handler.
Value
andData
are rounded and returned as951824235837330
. Iftostring()
is used, the correct number (as a string) is returned.