BigDecimal常用技巧

package com.wyw;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;

public class ObjectDemo {
    public static void main(String[] args) throws Exception {
         //加法   //57.51262
         System.out.println(new BigDecimal("1.25822").add(new BigDecimal("56.2544")));  
         //减法计算   //-4.007553
         System.out.println(new BigDecimal("1.257447").subtract(new BigDecimal("5.265")));
         //乘法计算    //3.2109175
         System.out.println(new BigDecimal("2.5585").multiply(new BigDecimal("1.255")));
         /**
          *  除法计算  //2.039  
          *  除法计算需要特别注意后面的两个参数,如果除尽的时候应该没问题,如果除不尽就会报错,
          *  所以这里需要舍子保留的小数位【3】跟计算结果取值办法【ROUND_HALF_UP】
          */
         System.out.println(new BigDecimal("2.5585").divide(new BigDecimal("1.255"),3,BigDecimal.ROUND_HALF_UP));
         
         //这里介绍四个常用的计算结果处理办法,当然处理办法有很多,这四种比较常用
         /*
          * 1.ROUND_DOWN 
          * 这里表示在保留了三位小数后的结果全部去掉,很明显这种不太合理 
          * 运行结果:2.558
          */
         System.out.println(new BigDecimal("2.5588").setScale(3,BigDecimal.ROUND_DOWN));
         
         /*
          * 2.ROUND_UP 
          * 这里表示在保留了三位小数后的结果全部加1然后进到前一位,很明显这种不太合理
          * 运行结果:2.559
          */
         System.out.println(new BigDecimal("2.5581").setScale(3,BigDecimal.ROUND_UP));
         
         /**
          * 3.ROUND_HALF_UP
          * 这里是正常的四舍五入办法,最为合理
          * 运行结果:2.558
          */
         System.out.println(new BigDecimal("2.5581").setScale(3,BigDecimal.ROUND_HALF_UP));
         
         /*
          * 4.ROUND_HALF_DOWN
          * 这里是把数据保留了小数位以后当后面的一位是5则舍去,如果是6则入上去,相当于五舍六入
          * 运行结果:2.556
          */
         System.out.println(new BigDecimal("2.5555").setScale(3,BigDecimal.ROUND_HALF_DOWN));
         /**
          *两个BigDecimal比较大小的方法  compareTo()
          *如果前者比后者大返回 1,如果两个一样大返回 0,如果前者比后者小返回 -1
          *此处运行结果为 -1
          */
         System.out.println(new BigDecimal("0.25").compareTo(new BigDecimal("0.26")));
    }
    
}

 

  

posted @ 2017-07-11 11:53  青春不打烊  阅读(181)  评论(0编辑  收藏  举报