繁体   English   中英

Java 6和Java 8之间的Java BigDecimal.doubleValue

[英]Java BigDecimal.doubleValue between Java 6 and Java 8

情况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和java8中的工作方式有所不同。另外我们谈论双打,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

http://bugs.java.com/view_bug.do?bug_id=7039369

http://bugs.java.com/view_bug.do?bug_id=7032154

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM