Java 6 和 Java 8 之间的 Java BigDecimal.doubleValue
Posted
技术标签:
【中文标题】Java 6 和 Java 8 之间的 Java BigDecimal.doubleValue【英文标题】:Java BigDecimal.doubleValue between Java 6 and Java 8 【发布时间】:2015-04-27 19:40:47 【问题描述】:案例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 相同的输出
【问题讨论】:
如何打印/可视化返回的双精度值? doubleValue() 返回double
,而不是字符串。除了您打印/格式化它们的方式之外,案例 1 中的两个双打看起来是相同的。见十进制格式
请您提供一个完整的程序示例,该程序为 Java 6 和 8 生成不同的输出。
完整代码 BigDecimal decimal = new BigDecimal(0.0050000); System.out.println(decimal.doubleValue()); //Java 6 - 0.0050 和 Java 8 - 0.005
似乎这是一个错误。 ***.com/questions/15812504/…
【参考方案1】:
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
我发现了一些已在 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
【讨论】:
以上是关于Java 6 和 Java 8 之间的 Java BigDecimal.doubleValue的主要内容,如果未能解决你的问题,请参考以下文章
在java中写个程序,输入10组数字,每组为0-3之间的6位数,算出相似位数最多的两组,并打印结果。