Skip to content

bug(json): primitive numbers greater than 14 significant digits are rounded by json.lua #1054

@dtfiedler

Description

@dtfiedler

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.

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions