You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 - rxi/json.lua#42
Example:
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.
The text was updated successfully, but these errors were encountered:
dtfiedler
added a commit
to dtfiedler/json.lua
that referenced
this issue
Oct 22, 2024
This is one approach, there are many ways to handle. But given wasm64 and lua 5.3+ support 64 bit integers more precision should be given to raw numbers when encoding.
Ref: permaweb/aos#384
This is one approach, there are many ways to handle. But given wasm64 and lua 5.3+ support 64 bit integers more precision should be given to raw numbers when encoding.
Ref: permaweb/aos#384
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 - rxi/json.lua#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.The text was updated successfully, but these errors were encountered: