![](/img/trans.png)
[英]How accurate is BigDecimal.doubleValue() if no operation is applied on the amount
[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.