我正在从JDK6 to JDK7升级。以下代码演示了Double.toString()
public class StringDemo
{
public static void main(String[] args)
{
System.out.println(Double.toString(.0005));
System.out.println(Double.toString(.005)); //different string
System.out.println(Double.toString(.05));
System.out.println(Double.toString(.5));
}
}
JRE6
5.0E-4
0.0050
0.05
0.5
JRE7
我正在寻找与上述变更相关的任何文档。兼容性页面不包括它。
5.0E-4
0.005 //changed.
0.05
0.5
输出保存在许多参考文件中,并通过字符串比较进行比较 - 我需要修复比较,但很想知道有关此更改的更多详细信息。关于为什么这种改变会得到赏金的权威答案。
答案 0 :(得分:28)
这是Java 1.3到1.6中的一个错误(在1.7中解决)。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4511638 错误报告http://bugs.sun.com/view_bug.do?bug_id=4428022包含更多详细信息。已在JDK 7(b75)中修复。
相关报告 - 引自上面的链接。
OpenJDK 7修复此问题的更改位于:http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f85aa3aedf41