Java BigDecimal.doubleValue between Java 6 and Java 8

Case 1: in Java6 BigDecimal ("0.0050000"). doubleValue () returns 0.0050 , and in Java 8 it returns 0.005

Case 2: in Java6 BigDecimal ("0.0250000"). doubleValue () returns 0.025, and in Java 8 it returns 0.025

In case 1: Java 6 returns with an extra trailing zero .. Any idea? Also, how to get Java 8 to return the same result as Java 6

+4
source share
1 answer

There is a difference in how System.out.println works in java6 and java 8. Also we are talking about doubles, BigDecimal is not a problem here. We can simplify this example:

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)

, :

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

+4

Source: https://habr.com/ru/post/1584974/


All Articles