RavenDB:Object 字段值随机舍入
RavenDB: Object Field Value Being Rounded At Random
首先,我想为这个有点模棱两可的问题标题道歉,但我真的不知道如何描述这个奇怪的问题。实际上,我在 RavenDB 中有一个文档存储,尽管试图改变它,但似乎有奇怪的约束导致它随机舍入为不同的值。
我用它制作的 gif 动图最能说明这一点:
在创建它的 C# class 中,它被存储为 ulong,并且一切都在代码中 直到 它被加载。此时我的 ID 不匹配。如您所见,文档名称是我要粘贴的 ID,它们应该匹配;但是我遇到了这个非常奇怪的故障。
有人知道吗?
根本问题在于 JavaScript 个数字。
所有 JS 数字实际上都是 double
,这意味着它们适用于 2^53 左右的整数。除此之外,你开始失去精度。
这里实际发生的是浏览器加载文档并将其保存回来。这通过 JS 引擎,导致数字精度丢失。
仅当您通过工作室更新文档时才会出现此问题。
在最新版本的 RavenDB 中,这将被检测到并且您将收到警告:
首先,我想为这个有点模棱两可的问题标题道歉,但我真的不知道如何描述这个奇怪的问题。实际上,我在 RavenDB 中有一个文档存储,尽管试图改变它,但似乎有奇怪的约束导致它随机舍入为不同的值。
我用它制作的 gif 动图最能说明这一点:
在创建它的 C# class 中,它被存储为 ulong,并且一切都在代码中 直到 它被加载。此时我的 ID 不匹配。如您所见,文档名称是我要粘贴的 ID,它们应该匹配;但是我遇到了这个非常奇怪的故障。
有人知道吗?
根本问题在于 JavaScript 个数字。
所有 JS 数字实际上都是 double
,这意味着它们适用于 2^53 左右的整数。除此之外,你开始失去精度。
这里实际发生的是浏览器加载文档并将其保存回来。这通过 JS 引擎,导致数字精度丢失。 仅当您通过工作室更新文档时才会出现此问题。
在最新版本的 RavenDB 中,这将被检测到并且您将收到警告: