mongoDB 存入 map<int64,Struct>的时候,存入没问题,取出 int64 被截断了

2021-02-03 20:58:09 +08:00
 jiang1234321

rt,mongoDB 的 client 读取这个 map 没问题,可以正常展示,但是用 go 版本的 mongoClient 就被截断了。

2649 次点击
所在节点    MongoDB
8 条回复
KuroNekoFan
2021-02-03 21:36:10 +08:00
是不是数字比 maxinteger 大了
jiang1234321
2021-02-03 22:08:34 +08:00
@KuroNekoFan 不是,小于 INT64_MAX
marquina
2021-02-03 23:27:19 +08:00
截断是啥意思?位数变少了还是精度丢失了?
KuroNekoFan
2021-02-04 08:47:40 +08:00
@jiang1234321 js 的 maxinteger 好像和 int64 不相等,mongo cli 可能用了 bigint 处理所以正常
参考 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/BigInt
jiang1234321
2021-02-04 09:49:17 +08:00
@marquina int64 后几位被清 0,导致数据都变了
cheng6563
2021-02-04 11:16:09 +08:00
不会 go
是不是用了类似 JSON 的 api ? JSON 里面没有 int64 只有 double
jiang1234321
2021-02-04 11:41:16 +08:00
@marquina int64 只读取到了前 56 位,后面八位变成 0 了
marquina
2021-02-04 12:41:06 +08:00
没用过 mongodb,不过我最近用 go 做 json 序列化 /反序列化时经常碰到精度丢失的问题(末尾几位变 0 ),因为 json 里用 double 表示数字,无法精确表示大整数

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

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

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

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

© 2021 V2EX