为什么 Firestore 会舍入 64 位整数?

Ben*_*ria 5 python integer google-cloud-firestore

我试图在我的 Firestore 数据库中存储来自 python 程序的 64 位整数。问题是最后一位数字似乎四舍五入了。

doc = db.collection('questions').document('0MPvbeTEglD9lbpDq6xm')
ints = [9223372036854775807, 9223372036854775533, 9223372036854775267]
doc.update({
    'random': ints
})
Run Code Online (Sandbox Code Playgroud)

当我查看数据库时,它们存储为:

random = [9223372036854776000, 9223372036854776000, 9223372036854775000}

根据文档,支持 64 位有符号整数。可能是什么问题?

Dou*_*son 5

我不是 100% 确定,但我的猜测是您所看到的原因是 JavaScript 整数的大小不是 64 位。它们实际上更像是53 位。由于 Firebase 控制台是一个使用 JavaScript 实现的网络应用,因此它可能无法理解您写入的完整 64 位超大整数。

我建议使用另一个 python 程序从文档中读取值,而不是检查控制台中的值。如果它们与您所写的相同,那么这里就没有真正的问题。您不能相信控制台中值的呈现。