3

long我有一个包含 IEEE 754 表示的64 位double。我想像标准 Java 一样将它转换为字符串Double.toString(d)。但是,我不能使用Double该类的任何方法,因为它们是错误的。(String.valueOf(d)"" + d不起作用,因为它们在Double.toString(d)内部使用。NumberFormat不起作用,因为它失去了精度。)所以我需要纯 Java 代码来进行转换。

我在哪里可以找到这样的代码?我尝试了 GNU Classpath 的源代码,但它使用本机方法进行此转换。

4

1 回答 1

5

我搜索了一下,发现:dtoa.java。看起来很复杂,但代码是在 GPL 许可(或 Mozilla Public License 1.1 许可)下的。

我希望它会帮助你。

(我什至发现了你提到的错误。)

编辑:

[Andrew Thompson] 是对的,你经常(总是?)失去浮点精度。正如这里所指出的,您可能想要使用BigDecimal

于 2012-08-01T23:30:35.290 回答