I am not a Javascript expert, but it looks like your number is stored as a 64-bit IEEE-754 floating point number. Of course, what I get from C # code that will display the exact double value:
double d = 9200000000032337; Console.WriteLine(DoubleConverter.ToExactString(d));
(Using my own DoubleConverter class.) My output is the same as yours: 9200000000032336
Floating-point values ββaccurately store a certain number of significant digits exactly - and when numbers get high enough, even integers cannot be stored exactly.
ECMA-262 seems to confirm this:
4.3.19
Numerical value
A primitive value corresponding to a 64-bit binary precision double format. IEEE 754 Value
and from section 7.8.3 (numeric literals):
A numeric literal denotes a value of type Number. This value is determined in two stages: firstly, the mathematical value (MV) is obtained from the literal; secondly, this mathematical value is rounded as described below.
Section 8.5 contains more detailed information.
source share