栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JSON传输的bigint:12000000000002539是否转换为12000000000002540?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSON传输的bigint:12000000000002539是否转换为12000000000002540?

该值实际上 超过Javascript中的最大值(“仅”为1.7 308左右)。

然而,该值 超过的“积分精度”的范围内。并不是发送错误的数字:而是 文字 12000000000002539 仅能精确地表示为
12000000000002540,因此Javascript中 从来没有
正确的数值。(积分范围约为+/- 2 53。)

这是使用 双相对精度
(IEEE-754中为binary64)类型存储所有数值(包括整数)的一种有趣现象:

12000000000002539 === 12000000000002540 // true

精确存储为数值的最大十进制数字位数为15(实际上是15.95)。在上面,有17位有效数字,因此一些 最不重要的信息会被静默丢失 。在这种情况下,
作为 Javascript的解析器/引擎的文本值读取。

在Javascript中处理此数量级整数的唯一安全方法是使用字符串文字或以其他方式将其分解(例如,自定义数字类型或“
bigint库”)。但是, 我建议只使用string
,因为它是人类可读的,相对紧凑(JSON中仅两个额外的字符),并且不需要特殊的序列化。由于在这种情况下该值只是一个“
id”,我希望不需要对它进行数学运算:)

快乐的编码。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号