JAVA通过BigDecimal四舍五入解决方案和注意事项
/** * @Description: 四舍五入留2位小数 * @param valueName * @return */ public static Double formateDouble45(Double d){ if(d == null){ return 0d; } BigDecimal b = new BigDecimal(d); double f = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return f; } 上面是以前我写的一个四舍五入保留2位小数的方法,最近发现是有问题的 例如:2.555 得到是2.55 而不是预想的2.56 改进如下: <pre name="code" class="java"> /** * @Description: 四舍五入留2位小数 * @param valueName * @return */ public static Double formateDouble45(Object d){ if(d == null){ return 0d; } BigDecimal b = new BigDecimal(d.toString()); double f = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return f; }
通过测试发现如果构建BugDecimal的时候使用String类型的话,则可实现全部正常的四舍五入.
具体原因不详.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。