3

Jsonドキュメントを記録するときに、Couchbaseが特定の制限を超えてプロパティの数値を変更することに気付いた人はいますか?

ここに例があります。このテストでは、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
}

この動作はどこかで指定されていますか? それを変更する方法はありますか?文字列値による解決策がありますが、私は興味があることを認めます。

Windows 7 Pro 32 ビット プラットフォームで Couchbase Server 2.1.0 を使用しています。

4

1 に答える 1

4

Couhbase のテクニカル エバンジェリストである Tugdual Grall が答えを教えてくれました。

これは、NodeJS を使用した次のテストで証明されているように、そのような値を表示するときの JavaScript の動作によるものです。

$ node
> console.log(12345678901234567890)
12345678901234567000

一方、Java API によって返される値は正しい (この例では 12345678901234567890)。この違いを示すのはコンソールだけです。Web 管理コンソールを使用してドキュメントを変更すると、変更された値が保存されます。

したがって、このタイプのデータを処理するときは、管理コンソールの使用に注意してください。

ありがとうタグ。

于 2013-09-10T08:47:33.060 に答える