因为我们计算机时二进制的。浮点数是没有办法用二进制去精确表示。有时候会丢失精度。所以工作中的商业计算大多都少用java.math.BigDecimal来进行精度计算。
1、BigDecimal的加减乘除
BigDecimal创建的是对象,所以加减乘除运算需要调用对应的方法。
public BigDecimal add(BigDecimal value); //加法 public BigDecimal subtract(BigDecimal value); //减法 public BigDecimal multiply(BigDecimal value); //乘法 public BigDecimal divide(BigDecimal value); //除法
2、大小比较
int a = bigdemical.compareTo(bigdemical2)
a = -1,表示bigdemical小于bigdemical2;
a = 0,表示bigdemical等于bigdemical2;
a = 1,表示bigdemical大于bigdemical2;
3、取精度
因为除法可能出现不能整除的情况。
(bigdecimal,4,BigDecimal.roundingMode)
ROUND_CEILING //向正无穷方向舍入 ROUND_DOWN //向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式 ROUND_UP //向远离0的方向舍入
取小数点后4位
4、取反
bigdecimal.negate()