请问 API 接口字段分发 16 位整数为 Int 类型有啥坑没有

2021-03-18 14:16:42 +08:00
 Phishion

就像这样,我想发 id1 这样的类型,不然客户端处理就设计到一系列问题,比如这个 ID 写入 Sqlite 的时候要转换成 Int 类型(要做索引),正常显示的时候就不用转换,ID 需要绑定到 Cell 上也要转换成 Int,请问直接分发 Int 可以嘛?

{
    "id1": 4216045057949697,
    "id2": "4216045057949697",
    "name": "XXX",
    "album": "YYY"
}

1336 次点击
所在节点    程序员
8 条回复
kaiki
2021-03-18 14:20:41 +08:00
该客户端做的事就让客户端做啊
ysc3839
2021-03-18 14:34:09 +08:00
一开始我还以为是 16 个二进制位长的整数,这种情况用 id1 的方法一般是没问题的。
但实际上说的是 16 个字符长的整数,在 JSON 里写过长的整数,有的解析库可能会使用小数运算导致丢失数据。比如在 js 中不能大于 Number.MAX_SAFE_INTEGER 。
ragnaroks
2021-03-18 16:26:00 +08:00
Int32 的话放心用,Int64 还是用字符串吧
Phishion
2021-03-18 17:48:20 +08:00
@ragnaroks 请问 Int64 的话会有什么问题呢?
killergun
2021-03-18 18:23:26 +08:00
@Phishion 数字过大 js 处理会有问题。需要单独处理
securityCoding
2021-03-18 18:55:46 +08:00
@Phishion 溢出,丢失精度
dalei
2021-03-18 19:21:49 +08:00
@Phishion js number 类型,用的浮点数存储的。整数范围小于 int64.
Phishion
2021-03-18 19:25:47 +08:00
@securityCoding
@killergun
@dalei

好的,谢谢解答!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762809

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX