java Bigdecimal的加减乘除运算及保留小数位

一、运算

java.math.BigDecimal。BigDecimal一共有多种够造方法,让我先来看看其中的两种用法:

第一种:BigDecimal(double val)

第二种:BigDecimal(String val)  //通常采用这种方式

来看看BigDecimal的四则运算:

BigDecimal的四则运算
加法bigDecimal1.add(bigDecimal2)
减法bigDecimal1.subtract(bigDecimal2)
乘法bigDecimal1.multiply(bigDecimal2)
除法bigDecimal1.divide(bigDecimal2)

代码:

/**
	 * 加减乘除
	 */
	@Test
	public void BigdecimalTest1(){
		BigDecimal bignum1 = new BigDecimal("10"); 
		BigDecimal bignum2 = new BigDecimal("5"); 
		BigDecimal bignum3 = null; 
		   
		//加法 
		bignum3 =  bignum1.add(bignum2);      
		System.out.println("和 是:" + bignum3); 
		   
		//减法 
		bignum3 = bignum1.subtract(bignum2); 
		System.out.println("差  是:" + bignum3); 
		   
		//乘法 
		bignum3 = bignum1.multiply(bignum2); 
		System.out.println("积  是:" + bignum3); 
		   
		//除法 
		bignum3 = bignum1.divide(bignum2); 
        System.out.println("余  是:" + bignum3); 
	}

结果:

和 是:15
差  是:5
积  是:50
余  是:2

二、保留小数位

/**
	 * 对小数的处理
	 */
	@Test
	public void BigdecimalTest2(){
		DecimalFormat   df   =new  DecimalFormat("#.00"); //格式化两位有效数字,四舍五入的
		System.out.println(df.format(3.1415926));
		
		//通过setScale()方法
		/**
		 * BigDecimal.setScale()方法用于格式化小数点
			setScale(1)表示保留一位小数,默认用四舍五入方式 
			setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
			setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
			setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
			setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
		 */
		double   f   =   111231.5585; 
		BigDecimal   b   =   new   BigDecimal(f); 
		double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue(); //保留2位小数
		System.out.println(f1);
		
		
		//除法保留两位小数
		BigDecimal b1 = new BigDecimal("1"); 
		BigDecimal b2 = new BigDecimal("3"); 
        System.out.println(b1.divide(b2,2,BigDecimal.ROUND_HALF_UP));
	}

结果:

3.14
111231.56
0.33