3

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

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

属性“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
}

这种行为是在某处指定的?有没有办法改变它?有通过String values的解决方案但我承认我很好奇。

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

4

1 回答 1

4

Couhbase 的技术传播者 Tugdual Grall 为我提供了答案。

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

$ node
> console.log(12345678901234567890)
12345678901234567000

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

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

拖船谢谢。

于 2013-09-10T08:47:33.060 回答