BigDecimal准确设置小数点后的精度

来源:互联网 发布:徐州华道数据面试流程 编辑:程序博客网 时间:2024/05/15 06:38
因为BigDecimal的原因吧,也可以说是double的问题吧

new   BigDecimal(currentLat2); 时值不再是 2.455675而是2.455674999999999999999999
因此在保留5位小数,四舍五入时,就变成2.45567而不是2.45568

后一个正确是因为没形成这种数据。

这种情况,用字符串可以避免这种问题
String currentLat2 = "2.455675";
        BigDecimal   b   =   new   BigDecimal(currentLat2);   

        System.out.println(b.setScale(5,   BigDecimal.ROUND_HALF_UP).doubleValue());




======================使用方法======================

BigDecimal ..setScale(5,   BigDecimal.ROUND_HALF_UP)  -->保留五位小数

0 0
原创粉丝点击