我有一个记录
[
"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
1000000000000000000000
],
JSON.stringify()
将其转换为形式
[
"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY",
1e+21
],
JSON.stringify()
以同样的方式写它,这能以某种方式解决吗?
JSON.parse
不会将其转换为1e+21,而是将其转换成一个数字,当以通常的方式转换为字符串时,该数字将作为字符串"1e+21"
输出。但无论你把它写成1000000000000000000000
还是1e+21
,这个数字都是一样的。
CCD_ 7可以以任意一种形式输出它;两者都是有效的JSON数字,并且都定义了完全相同的数字。
我应该注意,在JavaScript(或任何其他使用IEEE-754双精度浮点数[实际上是单精度浮点数]的语言(中,您需要注意这种大小的数字。这个数字完全在偶数整数可能不精确表示的范围内。任何大于9007199254740992(Number.MAX_SAFE_INTEGER + 1
(的数字都可以具有精确表示,也可以不具有精确表示。碰巧1000000000000000000000(你的数字(是这样,但例如9007199254740,993没有,也没有任何奇数。在某个时刻,你会发现只有4的倍数可以表示;然后它只是8的倍数,等等。查看这个问题的答案了解更多信息。
如果您仍然需要将1e+21
作为1000000000000000000000
,则可以使用(1e+21).toLocaleString().split(',').join('')
但实际上,如果你想把它用作一个数字,你不需要转换它,因为它们是绝对相同的。
相反,您可以将数字保留为字符串,并在需要将其用作数字时使用+'1000000000000000000000'
或parseInt('1000000000000000000000')
。