gpt4 book ai didi

java - JSON 库是否就 .5000...1 的 double 值达成一致?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:43 28 4
gpt4 key购买 nike

如果我需要将 float 准确地从 C# 传输到 JSON 再到 Java,我可以使用 JSON 数字吗?

如果不是,为什么不呢?哪些信息可能会丢失,我如何保证保留这些信息?

具体来说,我在 C# 中使用 Json.NET,在 Java 中使用 Jackson(通过其类 ObjectMapper)。

看起来 double.TryParse 是 Json.NET 将数字解析为 double 时最终使用的,而 Double.parseDouble 是 Jackson ObjectMapper 将数字解析为 double 时最终使用的。

我可以期待微软的 double.TryParse和 Java 的 Double.parseDouble就每个 JSON 数字的值达成一致?

我很担心,因为 ECMA-404、IETF RFC 7159 或 json.org 中的 JSON 数字位数不受限制。另一个问题 ( Maximum number of decimal digits that can affect a double ) 让我想知道我在多大程度上可以相信一个共同的信念,即第一 block 17 位十进制数字(丢弃前导零),或者实际上任何有限数量的十进制数字,足以确定一个 double -精度浮点值。

最佳答案

可以安全地忽略问题的 JSON 部分。在这两种情况下,它只是一个被解析的字符串。重要的是:

  • 两个系统中的数据类型double是否相同。
  • 如果是这样,double.TryParseDouble.parseDouble 总是为一组输入返回相同的 double 值。
  • 还有未被问及的问题:double 真的是这里正确的数据结构吗?

正如 Juunas 所述,两者对 double 使用相同的规范,因此您应该能够认为 double 相同。

任何一个解析文档都不能保证与另一个文档的可比性,也不能保证如何处理两个文档中无法表示的数字。

然而,当您在这里使用 double 时,并且(假设您在使用 double 时知道它们是不正确的)它们可能“足够好”,如果它们“不够好”,那么很可能无论如何,这会使正确的数据结构加倍,您应该查看固定的十进制格式。它如何与 JSON 一起工作是一个不同的问题。 :)

关于java - JSON 库是否就 .5000...1 的 double 值达成一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731305/

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