RFC Errata
RFC 8259, "The JavaScript Object Notation (JSON) Data Interchange Format", December 2017
Source of RFC: jsonbis (art)
Errata ID: 7617
Status: Reported
Type: Technical
Publication Format(s) : TEXT
Reported By: Guillaume Fortin-Debigaré
Date Reported: 2023-08-25
Section 6 says:
Note that when such software is used, numbers that are integers and are in the range [-(2**53)+1, (2**53)-1] are interoperable in the sense that implementations will agree exactly on their numeric values.
It should say:
Note that when such software parses numbers as rational numbers in decimal or scientific notation, they are interoperable in the sense that implementations will agree exactly on their numeric values. In particular, when such software is used, numbers that are integers and are in the range [-(2**53)+1, (2**53)-1] are interoperable in that sense.
Notes:
IEEE 754 does not consider negative zero and positive zero to be the same numeric value, even though it considers them equal. Despite this, JavaScript serializes negative zero as the JSON text "0", which contradicts the original text.
My suggested correction mentions "rational numbers in decimal or scientific notation" since it's never explicitly mentioned in the document how a number should be interpreted when parsed to maximize interoperability. This version addresses that concern at the same time.