19
2019
06

BigDecimal 处理小数计算

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则向下舍


例:

      public static void main(String[] args) {

        BigDecimal mData = new BigDecimal("9.655").setScale(2, BigDecimal.ROUND_HALF_UP);

        System.out.println("mData=" + mData);

      }


----输出结果:mData=9.66





public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 除法 并保留相应小数

意思:用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,

roundingMode表示的就是保留模式是什么,是四舍五入还是其它可以自己选.

例:

public static void main(String[] args) {

     BigDecimal a = new BigDecimal("1.501");  

     BigDecimal b = new BigDecimal("100");  

     System.out.println("除:" + a.divide(b));  

     System.out.println("除:" + a.divide(b,3,BigDecimal.ROUND_HALF_UP));  

     System.out.println("除:" + a.divide(b,6,BigDecimal.ROUND_HALF_UP));  

}

输出结果:

            除:0.01501

            除:0.015

            除:0.015010



其他相关方法,加减乘除(摘自网络,已运行验证)

代码:


  1. import java.math.BigDecimal;    

  2. /* 

  3.  * 构造方法: 

  4.  *      public BigDecimal(String val): 

  5.  *  

  6.  * 金融相关的东西(例:银行钱的小数,商品价格小数,实验小数) 

  7.  *  

  8.  * 成员方法: 

  9.  *      public BigDecimal add(BigDecimal augend):加 

  10.  *      public BigDecimal subtract(BigDecimal subtrahend):减 

  11.  *      public BigDecimal multiply(BigDecimal multiplicand):乘 

  12.  *      public BigDecimal divide(BigDecimal divisor):除 

  13.  *      public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取。 

  14.  *       

  15.  */  

  16. public class BigDecimalDemo {  

  17.     public static void main(String[] args) {  

  18.         System.out.println(0.09 + 0.01);  

  19.         System.out.println(1.0 - 0.32);  

  20.         System.out.println(1.015 * 100);  

  21.         System.out.println(1.301 / 100);  

  22.   

  23.         // public BigDecimal add(BigDecimal augend):加  

  24.         BigDecimal bd1 = new BigDecimal("0.09");  

  25.         BigDecimal bd2 = new BigDecimal("0.01");  

  26.         System.out.println("add:" + bd1.add(bd2));  

  27.         System.out.println("----------------------");  

  28.         // public BigDecimal subtract(BigDecimal subtrahend):减  

  29.         BigDecimal bd3 = new BigDecimal("1.0");  

  30.         BigDecimal bd4 = new BigDecimal("0.32");  

  31.         System.out.println("subtract:" + bd3.subtract(bd4));  

  32.         System.out.println("----------------------");  

  33.         // public BigDecimal multiply(BigDecimal multiplicand):乘  

  34.         BigDecimal bd5 = new BigDecimal("1.015");  

  35.         BigDecimal bd6 = new BigDecimal("100");  

  36.         System.out.println("multiply:" + bd5.multiply(bd6));  

  37.         System.out.println("----------------------");  

  38.         // public BigDecimal divide(BigDecimal divisor):除  

  39.         BigDecimal bd7 = new BigDecimal("1.301");  

  40.         BigDecimal bd8 = new BigDecimal("100");  

  41.         System.out.println("divide:" + bd7.divide(bd8));  

  42.         System.out.println("divide:" + bd7.divide(bd8,3,BigDecimal.ROUND_HALF_UP));  

  43.         System.out.println("divide:" + bd7.divide(bd8,9,BigDecimal.ROUND_HALF_UP));  

  44.     }  

  45. }  

运行结果:

0.09999999999999999

0.6799999999999999

101.49999999999999

0.013009999999999999

add:0.10

----------------------

subtract:0.68

----------------------

multiply:101.500

----------------------

divide:0.01301

divide:0.013

divide:0.013010000


« 上一篇 下一篇 »