• BigDecimal

    java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。

    方法 表达式 描述
    基本数据类型 —> BigDecimal new BigDecimal(int val)、new BigDecimal(double val)
    new BigDecimal(long val)、new BigDecimal(String val)
    这几个都是常用的构造器,他们返回的对象都是BigDecimal对象。换而言之, 将各个类型的值转换为BigDecimal对象,就是通过构造器。
    BigDecimal —> 基本数据类型 toString( )、doubleValue( )、floatValue( )、longValue( )、intValue( )
    运算






    add(BigDecimal augend)
    subtract(BigDecimal subtrahend)
    multiply(BigDecimal multiplicand)
    最大值 max(BigDecimal val)
    最小值 min(BigDecimal val)
    绝对值 abs()
    相反数 negate()
    divide(BigDecimal divisor, int scale, int roundingMode) divisor: 被除数;scale: 保留小数位数;
    roundingMode: 保留小数时采用的规则。一般使用BigDecimal.ROUND_HALF_UP(四舍五入)
    四舍五入 setScale(int newScale, RoundingMode roundingMode) newScale: 指定要保留几位;roundingMode: 取舍规则,可选参数 ,默认为 ROUND_UNNECESSARY
    小数保留规则 ROUND_CEILING //向正无穷方向舍入
    ROUND_DOWN //向零方向舍入
    ROUND_UP //向远离0的方向舍入
    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 //计算结果是精确的,不需要舍入模式
    比较 boolean equals(Object x) scale(保留的小数位)相同 && 值相同
    int compareTo(BigDecimal val) 仅比较值。值等于val返回0,大于返回1,小于返回-1