BigDecimal
前言
double和float类型采用的都是近似值的存储方式
比如
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
结果是0.09999999999999998
这是存在着一定的误差,是允许误差存在的,但是有一些行业精度要求比较高度的时候,就需要使用BigDecimal
概述
位置:java.math包中
作用:精确计算浮点数
创建方式:BigDecmail bd = new BigDecimal("1.0");
一定用字符串的构造方式
使用
BigDecimal b1 = new BigDecimal("1.0"); BigDecimal b2 = new BigDecimal("0.9"); BigDecimal b3 = b1.subtract(b2); System.out.println(b3);
subtract
减法
add
加法
multiply
乘法
divide
链式计算
divide
除法
BigDecimal r4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
divide(BigDecimal bd,int scal,RoundingMode mode)
参数scal:指定精确到小数点后几位
参数mode:
指定小数部分的取舍模式,通常采用四舍五入的模式
取值为BigDecimal.ROUND_HALF_UP
2,保留两位小数
ROUND_HALF_UP,四舍五入