BigDecimal 加减乘除运算和精度控制

1.先说下BigDecimal 的好处
在java中浮点数由double与float表示,他们在计算的时候会出现精度问题,当涉及到钱的计算时,我们便不能使用double或者float进行计算,这时我们需要使用BigDecimal。

2.简单使用 BigDecimal进行计算

    public static void main(String[] args) {


        BigDecimal bl = new BigDecimal("100.369");
        BigDecimal b2 = new BigDecimal("1.369");
        String s = new String("2");
		
		BigDecimal bigDecimal = bl.add(b2);    //加
		BigDecimal bigDecimal = bl.subtract(b2);  //减
		BigDecimal bigDecimal = bl.multiply(b2);   //乘
        BigDecimal bigDecimal = bl.divide(b2);    //除

        System.out.println(bigDecimal);

    }

3.精度的控制

保留精度:	
		//取一位整数 
    System.out.println(newDecimalFormat("0").format(pi));   //3 
    //取一位整数和两位小数 
    System.out.println(newDecimalFormat("0.00").format(pi)); //3.14 
    //取两位整数和三位小数,整数不足部分以0填补。 
    System.out.println(new DecimalFormat("00.000").format(pi));// 03.142 
    //取所有整数部分 
    System.out.println(newDecimalFormat("#").format(pi));   //3 
    //以百分比方式计数,并取两位小数 
    System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16% 
 
    longc=299792458;  //光速 
    //显示为科学计数法,并取五位小数 
    System.out.println(newDecimalFormat("#.#####E0").format(c)); //2.99792E8 
    //显示为两位整数的科学计数法,并取四位小数 
    System.out.println(newDecimalFormat("00.####E0").format(c)); //29.9792E7 
    //每三位以逗号进行分隔。 
    System.out.println(newDecimalFormat(",###").format(c));   //299,792,458 
    //将格式嵌入文本 
    System.out.println(newDecimalFormat("光速大小为每秒,###米。").format(c)); 	

ps:官方api中给出的解决方案是使用string类型的构造函数,能保证精度不丢失

此文章仅限技术参考,用于个人笔记使用。

你可能感兴趣的:(BigDecimal 加减乘除运算和精度控制)