BigDecimal最基础用法【转】

BigDecimal最基础用法

用字符串生成的BigDecimal是不会丢精度的. 

  • 简单除法.
public class DemoBigDecimal {

    public static void main(String[] args) {
        String value = "1235";
        if( !value.isEmpty() ){
            BigDecimal bd = new BigDecimal(value);
            bd = bd.divide(new BigDecimal(1000),3,RoundingMode.HALF_UP);//精确到小数点后3位,且用四舍五入
            value = bd.toString();
            System.out.println(value);
        }
    }
}

 

 

NumberFormat另一种设精度方法?

if(value instanceof Number) {//浮点数精度进行兼容
    java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
    nf.setGroupingUsed(false);
    nf.setMaximumIntegerDigits(30);
    nf.setMaximumFractionDigits(8);
    //nf.setMinimumFractionDigits(2);
    BeanTool.setAttributeByString(bean, entry.getKey(), nf.format(value));
    continue;
}

 

 

DecimalFormat保留小数位数

保留小数:java DecimalFormat format 方法的使用

public class test {
    public static void main(String[] args) {
        String ret = getConvertData(01.0003);
        System.out.println(ret);
    }
    
    public static String getConvertData(Double data){
        String ret = "";
        java.text.DecimalFormat df = new java.text.DecimalFormat("0.00"); 
        ret = df.format(data);
        return ret;
    }

}

 

BigDecimal比较大小

【重点】在进行比较后时一定要让原始构造函数的参数保持一致, 不然极有可能得不到预期结果,见下例

import java.math.BigDecimal;

public class TempTest {
    public static void main(String[] args) throws Exception {
        BigDecimal bd1 = new BigDecimal("1.23");
        BigDecimal bd2 = new BigDecimal("1.230");
        BigDecimal bd3 = new BigDecimal(1.23);
        BigDecimal bd4 = new BigDecimal(1.230);
        //compareTo()返回的结果是int类型,-1表示小于,0是等于,1是大于。
        System.out.println(bd1.compareTo(bd2));//"1.23"和"1.230"相等,打印0
        System.out.println(bd3.compareTo(bd4));//1.23和1.230相等,打印0
        //【重点】在进行比较后时一定要让原始构造函数的参数保持一致, 不然极有可能得不到预期结果,见下例
        System.out.println(bd1.compareTo(bd3));//根据结果"1.23"和1.23,前者更大,一定要避开这种类型不匹配的比较.

        BigDecimal bd5 = new BigDecimal(2);
        System.out.println(bd4.compareTo(bd5));//1.230比2小,打印-1
        System.out.println(bd5.compareTo(bd4));//2比1.230大,打印1
    }
}

 

参考

BigDecimal加减乘除计算以及比较大小==>https://www.cnblogs.com/whatlonelytear/p/5138989.html

posted @ 2016-01-18 13:39  苦涩泪滴  阅读(228)  评论(0编辑  收藏  举报