案例:在的Java6的BigDecimal( “0.0050000”)的doubleValue()返回0.0050,和在Java中8返回值是0.005爪哇BigDecimal.doubleValue
情况2:在的Java6 BigDecimal(“0.0250000”)。doubleValue()返回0.025,在Java 8中返回值为0.025
情况1:Java 6以额外的尾随零返回。还有如何让Java 8返回与Java相同的输出6
案例:在的Java6的BigDecimal( “0.0050000”)的doubleValue()返回0.0050,和在Java中8返回值是0.005爪哇BigDecimal.doubleValue
情况2:在的Java6 BigDecimal(“0.0250000”)。doubleValue()返回0.025,在Java 8中返回值为0.025
情况1:Java 6以额外的尾随零返回。还有如何让Java 8返回与Java相同的输出6
System.out.println在java6和java 8中的工作方式有所不同。 另外我们讨论双打,BigDecimal在这里不是问题。因为调用的println#java.io.PrintStream中打印(双),然后调用将String.valueOf(d)您可以检查它在JDK
System.out.println(Double.toString(0.0050000));
:我们可以简化这个例子。
但java.lang.Double中的#的toString(双)在JDK6和JDK8看起来不同:
return FloatingDecimal.toJavaFormatString(d); //JDK 6
return new FloatingDecimal(d).toJavaFormatString();//JDK 8
我发现它已被固定在Java 7中一些问题的JDK(Java 7中具有类似相同的输出在Java 8)
我想这个问题可能的原因:
http://bugs.java.com/view_bug.do?bug_id=6935102
如何打印/可视化返回的double的值? – icza
doubleValue()返回一个'double',而不是一个字符串。情况1中的两个双打似乎是相同的,除了你打印/格式化它们的方式。请参阅DecimalFormat – ControlAltDel
请您可以提供一个程序的完整示例,该程序会为Java 6和8生成不同的输出。 –