当前位置: 首页 > 面试题库 >

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

柳志专
2023-03-14
问题内容

我正在像传输原始数据,[{id: 12000000000002539, Name: "Some Name"}]并且[{id: 12000000000002540, Name: "Some Name"}]在解析后获取对象,因为现在html" target="_blank">服务器端将id转换为字符串似乎有所帮助。但是,有没有更好的方法来正确传输bigint数据?


问题答案:

该值实际上 超过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”,我希望不需要对它进行数学运算:)

快乐的编码。



 类似资料:
  • 更多信息: 我有一个hibernate存储库,如下所示- Hibernate以某种方式将(在where子句中)作为,而SAMPLE_TABLE将这个id字段作为,因此会引发类型不匹配问题。 字段在这里定义为long。 Edit-2如果有人得到这样的问题,很可能他在查询中传递了null值。

  • 有人能帮我定义jolt规范,把输入json转换成输出json吗..我在一个文件中输入了json,像{"filename":"test1 "," value":"10"} {"filename":"test2 "," value":"10"}。转换后的输出json应该如下所示:{"filename":"test "," overallvalue":"20 "," filename":[{"filen

  • 问题内容: 我有一个CSV导入到我们的数据库。“列”之一包含 应 为INT的数据,但某些行的数字仅落在BIGINT范围内(因为它们是来自我们合作伙伴之一的测试数据)。我们在内部存储INT,不希望更改。 我想从BIGINT安全地转换为INT。安全地说,如果发生算术溢出,则不会出现任何错误。如果转换成功,我希望我的脚本继续进行。如果失败,我希望它短路。我似乎无法弄清楚正确的语法。这就是我得到的: 我曾

  • 问题内容: 我以为我有一种快速的方法来将“唯一标识符”值转换成Big Int,然后再转换回来。但是在我的第二次转换中有一个问题。任何人都可以评论将GUID完全转换为数字并返回的正确方法吗?当我尝试将其从数字表示形式转换回其原始GUID时,我只是得到了GUID的一部分,而不是全部。 我想将一个整数(我认为它将在MSSQL中归类为“ Large BigInt”?)传递给远程系统,仅使用字符0-9,并且

  • 问题内容: 如何在Golang中将大整数转换为字符串(或整数)? 问题答案: 只需使用以下方法:http : //golang.org/pkg/math/big/#Int.String

  • 问题内容: 我想将一个表的所有行插入另一个表,并且还希望将一个字段转换为,但是当我使用SQL Server时显示错误: 将数据类型nvarchar转换为bigint时出错 我该如何解决这个问题? 问题答案: 您可以尝试使用以确定确实是数字的那些行: 那将转换那些可以转换的行-其他行需要手动处理。