java - 将 IEEE 754 double 转换为字符串的纯 Java 代码

标签 java string double ieee-754

我有一个 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/

相关文章:

java - 新手使用 run(),但找不到答案。 (小程序)

android - 将 String 转换为 Double,不包括部分字符串

java - Java Point 类 getX() 或 getY() 是否自动转换?

Double.GetHashCode() 的 C# 缺陷

java 字符串数组按升序排列

java - JApplet 使用的线程分割

Java iText 页脚

java - 在 Java 中,如何将 String 转换为 char 或将 char 转换为 String?

Java从另一个类获取字符串返回null

c - 如何在C中不使用科学记数法显示大双数?