案例1:在Java6 BigDecimal(“0.0050000”)中,.doubleValue()返回0.0050,在Java8中返回值为0.005
案例2:在Java6 BigDecimal(“0.0250000”)中,.doubleValue()返回0.025,在Java8中返回值为0.025
在第1种情况中: Java 6返回时附加尾随为零。知道吗??另外,如何使Java 8返回与Java 6相同的输出
发布于 2015-04-28 12:56:40
System.out.println在java6和java 8中的工作方式是不同的。此外,我们还讨论了双倍,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我发现了一些JDK问题,这些问题已经在java 7中解决了(java 7的输出与java 8的输出相同)
我认为这个问题可能是一个原因:
id=6935102
id=7039369
id=7032154
https://stackoverflow.com/questions/29904514
复制相似问题