我有一个 64 位 long
,其中包含 double
的 IEEE 754 表示。我想将它转换为字符串,就像标准 Java Double.toString(d)
所做的那样。但是,我不能使用 Double
类的任何方法,因为它们有问题。 (String.valueOf(d)
和 ""+ d
也不起作用,因为它们在内部使用 Double.toString(d)
。 NumberFormat
不起作用,因为它失去了精度。)所以我需要纯 Java 代码来进行转换。
我在哪里可以找到这样的代码?我尝试了 GNU Classpath 的源代码,但它使用 native 方法进行此转换。
最佳答案
我搜索了一下,发现:dtoa.java . 看起来很复杂,但代码是在 GPL 许可证(或 Mozilla Public License 1.1 许可证)下。
希望对您有所帮助。
(我什至找到了你提到的 bug。)
编辑:
[Andrew Thompson] 是对的,您经常(总是?)失去浮点精度。
正如指出的那样here , 你可能想使用 BigDecimal
关于java - 将 IEEE 754 double 转换为字符串的纯 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11768945/