BigDecimal运算

BigDecimal由任意精度整数未缩放值和32位整数级别组成 。 如果为零或正数,则刻度是小数点右侧的位数。 如果是负数,则数字的非标定值乘以10,以达到等级的否定的幂。 因此,BigDecimal所代表的BigDecimal值为(unscaledValue × 10-scale) 。
 
创建BigDecimal对象:
    BigDecimal b = new BigDecimal("2.12");
    BigDecimal b1 = newBigDecimal(Double.toString(1.234));
    BigDecimal b2 = BigDecimal.valueOf(1.234);    //可能出现精度问题
 
public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value);//减法
public BigDecimal multiply(BigDecimal value);//乘法
public BigDecimal divide(BigDecimal value);//除法
BigDecimal的运算都没有对原值进行操作,而是返回一个新的BigDecimal对象
BigDecimal的比较用的是BigDecimal的compareTo方法,将此 BigDecimal 与指定的 BigDecimal 比较。
根据此方法,值相等但具有不同标度的两个BigDecimal对象(如,2.0 和 2.00)被认为是相等的。
当此 BigDecimal 在数字上小于、等于或大于被比较对象时,返回 -1、0 或 1。
 
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则向下舍
原文地址:https://www.cnblogs.com/gqymy/p/9414562.html