gpt4 book ai didi

nosql - 为什么 Couchbase 对 json 文档中的数值进行舍入?

转载 作者:行者123 更新时间:2023-12-04 02:47:44 24 4
gpt4 key购买 nike

有没有人注意到 Couchbase 在记录 Json 文档时会在一定限度内更改属性的数值?

这是一个例子。对于此测试,我通过 couchbase 网络界面使用实时输入。

属性“inputValue”对应于单击保存按钮之前在属性“valueAfterSave”中输入的值。

属性“valueAfterSave”对应保存后的值。

对于一个16位的数字来说,这很好:

{
"inputValue": "1234567890123456",
"valueAfterSave": 1234567890123456
}

但是从17位开始,系统开始改值:

{
"inputValue": "12345678901234567",
"valueAfterSave": 12345678901234568
}

{
"inputValue": "12345678901234599",
"valueAfterSave": 12345678901234600
}

{
"inputValue": "12345678901234567890",
"valueAfterSave": 12345678901234567000
}

出于对 40 位数字的好奇

{
"inputValue": "1234567890123456789012345678901234567890",
"valueAfterSave": 1.234567890123457e+39
}

此行为在某处指定?有没有办法改变它?有通过字符串值的解决方案,但我承认我很好奇。

我在 Windows 7 Pro 32 位平台上使用 Couchbase Server 2.1.0。

最佳答案

Couhbase 的技术布道者 Tugdual Grall 给我带来了答案。

这是由于 JavaScript 在显示此类值时的行为,以下 NodeJS 测试证明了这一点:

$ node
> console.log(12345678901234567890)
12345678901234567000

另一方面,Java API 返回的值是正确的(在我们的示例中为 12345678901234567890)。只是控制台显示了这种差异。如果您修改文档,通过Web管理控制台,将保存修改后的值。

因此,当我们处理此类数据时,请谨慎使用管理控制台。

谢谢你。

关于nosql - 为什么 Couchbase 对 json 文档中的数值进行舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com