- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果我需要将 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.TryParse
和 Double.parseDouble
总是为一组输入返回相同的 double
值。正如 Juunas 所述,两者对 double 使用相同的规范,因此您应该能够认为 double
相同。
任何一个解析文档都不能保证与另一个文档的可比性,也不能保证如何处理两个文档中无法表示的数字。
然而,当您在这里使用 double 时,并且(假设您在使用 double 时知道它们是不正确的)它们可能“足够好”,如果它们“不够好”,那么很可能无论如何,这会使正确的数据结构加倍,您应该查看固定的十进制格式。它如何与 JSON 一起工作是一个不同的问题。 :)
关于java - JSON 库是否就 .5000...1 的 double 值达成一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35731305/
我是一名优秀的程序员,十分优秀!