Java之BigDecimal介绍

最近在做项目,对于数值得精度要求比较高,需要用到大数据,于是就和BigDecimal 打交道,发现BigDecimal 与Java基本类型的用法不同,特总结如下,希望对初学者有所帮助。

 

  1. import java.math.BigDecimal;  
  2. import java.text.DecimalFormat;  
  3.   
  4. public class BigDecimalDemo {  
  5.     public static void main(String[] args) {  
  6.         BigDecimal a = new BigDecimal(100);//初始化BigDecimal  
  7.         BigDecimal b = new BigDecimal(20);//初始化BigDecimal  
  8.         BigDecimal c = new BigDecimal(123456.7897);//初始化BigDecimal  
  9.   
  10.         BigDecimalDemo demo = new BigDecimalDemo();  
  11.         //计算两个BigBigDecimal 的和  
  12.         BigDecimal result1 = demo.add(a, b);  
  13.         BigDecimal result2 = demo.substract(a, b);  
  14.         BigDecimal result3 = demo.multiply(a, b);  
  15.         BigDecimal result4 = demo.divide(a, b);  
  16.         String     result5 = demo.formateBigDecimal(c);  
  17.   
  18.         System.err.println("计算两个a与b 的和 :"+result1);  
  19.         System.err.println("计算两个a与b 的差 :"+result2);  
  20.         System.err.println("计算两个a与b 的乘积 :"+result3);  
  21.         System.err.println("计算两个a与b 的除法 :"+result4);  
  22.         System.err.println("格式化 :"+result5);  
  23.     }  
  24.     /** 
  25.      *  
  26.      * 功能说明:加法 
  27.      * @param a 
  28.      * @param b 
  29.      * @return 
  30.      * @author: 石玉良 
  31.      * @DATE:2014-1-8 @TIME: 下午3:58:22 
  32.      */  
  33.     public BigDecimal add(BigDecimal a,BigDecimal b){  
  34.         if(a!=null&&b!=null){  
  35.             return a.add(b);  
  36.         }  
  37.         return null;  
  38.     }  
  39.     /** 
  40.      *  
  41.      * 功能说明:减法 
  42.      * @param a 
  43.      * @param b 
  44.      * @return 
  45.      * @author: 石玉良 
  46.      * @DATE:2014-1-8 @TIME: 下午3:58:41 
  47.      */  
  48.     public BigDecimal substract(BigDecimal a,BigDecimal b){  
  49.         if(a!=null&&b!=null){  
  50.             return a.subtract(b);  
  51.         }  
  52.         return null;  
  53.     }  
  54.     /** 
  55.      *  
  56.      * 功能说明:乘法 
  57.      * @param a 
  58.      * @param b 
  59.      * @return 
  60.      * @author: 石玉良 
  61.      * @DATE:2014-1-8 @TIME: 下午3:58:56 
  62.      */  
  63.     public BigDecimal multiply(BigDecimal a,BigDecimal b){  
  64.         if(a!=null&&b!=null){  
  65.             return a.multiply(b);  
  66.         }  
  67.         return null;  
  68.     }  
  69.     /** 
  70.      *  
  71.      * 功能说明:除法 
  72.      * @param a 
  73.      * @param b 
  74.      * @return 
  75.      * @author: 石玉良 
  76.      * @DATE:2014-1-8 @TIME: 下午3:59:10 
  77.      */  
  78.     public BigDecimal divide(BigDecimal a,BigDecimal b){  
  79.         //两个数相除时需要考虑分母为0的情况  
  80.         //compareTo 方法,  
  81.         //返回      0     a==b  
  82.         //返回    -1     a<b  
  83.         //返回       1      a >b  
  84.         if(b.compareTo(new BigDecimal(0))!=0){  
  85.             return a.divide(b, 2,BigDecimal.ROUND_HALF_UP);  
  86.         }  
  87.         return null;  
  88.     }  
  89.     /** 
  90.      *  
  91.      * 功能说明:格式化显示 千分位 保留两位有效小数 
  92.      * @param a 
  93.      * @return 
  94.      * @author: 石玉良 
  95.      * @DATE:2014-1-8 @TIME: 下午4:10:24 
  96.      */  
  97.     public String formateBigDecimal(BigDecimal a){  
  98.         if(a==null){  
  99.             return "";  
  100.         }else{  
  101.             DecimalFormat df = new DecimalFormat("###,##0.00");   
  102.             return df.format(a.doubleValue());  
  103.         }  
  104.     }  
  105. }  
posted @ 2014-01-09 16:19  刘俊鹏123  阅读(601)  评论(0编辑  收藏  举报
重生之大文豪