用于将IEEE 754 double转换为字符串的纯Java代码

pts*_*pts 3 java string double ieee-754

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

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

fst*_*our 5

我搜索了一下,发现:dtoa.java.这似乎很复杂,但代码是GPL许可证(或Mozilla Public License 1.1许可证).

我希望它会对你有所帮助.

(我甚至发现了你提到的bug.)

编辑:

[安德鲁汤普森]是对的,你经常(总是?)失去浮点精度.正如此处所指出的,您可能想要使用BigDecimal