BigDecimal简单说

 1) 浮点数的舍弃规则; 假设小数点后保留两位

             RoundingMode.CEILING:向正无穷大的方向舍入;  1.245 → 1.25   -1.245 → -1.24

             RoundingMode.DOWN:去掉保留位数后面的部分;     1.245 → 1.24     -1.245 → -1.24

             RoundingMode.FLOOR:取左边最近的正数。1.245 → 1.24   -1.244 → -1.25

             RoundingMode.HALF_DOWN:五舍六入,负数先取绝对值再五舍六入再负数        1.245 → -1.25          1.246 → 1.25      -1.245 → -1.24             -1.246 → -1.25

            RoundingMode.HALF_UP:四舍五入,负数原理同上 

            RoundingMode.HALF_EVEN:这个比较绕,若舍入位左边是奇数则四舍五入,若是偶数则五舍六入; 1.245 → 1.24    1.255 → 1.26

            

     2) BigDecimal用法

          java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法;

         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。

      

原文地址:https://www.cnblogs.com/leavescy/p/9670609.html