BigDecimal类的使用:
一.简介
BigDecimal类位于java.math.BigDecimal包下。使用此类可以完成大的小数操作,而且也可以使用此类进行精确的四舍五入,这一点在开发中经常使用。
对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算结果,则必须使用BigDecimal类。
1,构造器描述
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。 //不推荐使用
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。//推荐使用
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。
这里,需要注意的是除法的问题,divide的第二个参数设置为精度,第三个参数设置的取舍问题,默认是四舍五入。
BigDecimal b = new BigDecimal("15.8999");
BigDecimal c= new BigDecimal("3.24");
BigDecimal d= new BigDecimal("-5.12");
System.out.println(b.add(c)); //加法
System.out.println(b.subtract(c));//减法
System.out.println(b.multiply(c));//乘法
//保留小数点后两位,采取5以及5以下都别舍弃
System.out.println(b.divide(c,2,BigDecimal.ROUND_HALF_DOWN));
System.out.println(b.remainder(c));//求余数
System.out.println(b.max(c));//求两数最大的数
System.out.println(b.min(c));//求两数最小的数
System.out.println(d.abs());//求一个数的绝对值
System.out.println(c.negate());//求一个数的相反数
这里注意的是,在除数除不尽的情况下,没有设置第二,三个参数,会报错。
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact represen
二,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则向下舍