情况1:在Java6中,BigDecimal(“ 0.0050000”)。doubleValue()返回0.0050,在Java 8中,返回值为0.005
情况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中的工作方式有所不同。我们还讨论了double,BigDecimal在这里不是问题。我们可以将此示例简化为:
System.out.println(Double.toString(0.0050000));
因为println调用java.io.PrintStream#print(double)然后调用String.valueOf(d),所以可以在JDK中对其进行检查。
但是java.lang.Double#toString(double)在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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句