首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用JSON.parse解析量

用JSON.parse解析量
EN

Stack Overflow用户
提问于 2018-03-02 17:54:06
回答 1查看 274关注 0票数 1

它存在一个在小数点后有两位数的最大浮点数,它可以用JSON.parse解析而不会失去精度?

例如:

代码语言:javascript
代码运行次数:0
运行
复制
JSON.parse('{"amount": 9999999999999.99}')

{金额: 9999999999999.99} //没有损失(可能)

代码语言:javascript
代码运行次数:0
运行
复制
JSON.parse('{"amount": 99999999999999.99}')

{金额: 99999999999999.98} //损失

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 19:45:20

如果x是一个具有15个有效数字或更少的十进制浮点数,则将x转换为JavaScript的数字类型,然后将结果转换回具有相同有效位数的十进制浮点数,只要该数字在正常范围内,则产生精确的x。因此,从“.00”到“9999999999999.99”的小数点后有两位数的所有十进制数字都可以在小数点后用两位数字进行解析、存储和重新格式化,其结果将是原始数字。

存储的值一般不等于原始值。例如,当解析“.99”时,结果将完全是.99。但是,存储的值将足够接近原始值,因此,当转换回原来的数字数时,原始值将被恢复。请注意,您必须知道原始数字;它本身并不是数字值的一部分。

15是该属性的下界。可能有一些指数值,所有16位小数位数都能在往返过程中存活下来。然而,由于99999999999999.99 (16位数字)产生99999999999999.98,我们知道这不是其中之一。

如果您想知道这个往返属性首先失败的9999999999999.99到99999999999999.99之间的特定数字,您可能需要在计算上搜索它。它不是一个很容易用数学性质直接计算的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49074729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档