美文网首页
商业计算--BigDecimal

商业计算--BigDecimal

作者: 木讷山人_a986 | 来源:发表于2018-04-14 00:06 被阅读0次

    float和double类型主要是为了科学计算而设计的,它们并没有提供完全精确的结果,所以不应该被用于需要精确结果的场合。
    对于此,在大多数的商业计算中,一般采用BigDecimal来进行精确计算。
    BigDecimal的使用步骤如下:
    1.初始化一个BigDecimal对象,两种方法都可行

    BigDecimal bd1 = new BigDecimal(Double.toString(0.123));
    BigDecimal bd2 = BigDecimal.valueOf(0.123);
    

    2.具体运算方法如下:

    public BigDecimal add(BigDecimal value);                        //加法
    public BigDecimal subtract(BigDecimal value);                   //减法 
    public BigDecimal multiply(BigDecimal value);                   //乘法
    public BigDecimal divide(BigDecimal value);                     //除法
    

    对于除法,要考虑除不尽的情况,因此需要指定保留小数位和取值策略的问题。
    计算结束后,如果我们需要将BigDecimal对象转换成相应的基本数据类型的变量,可以使用floatValue(),doubleValue()等方法。
    现在我们就来封装一个BigDecimal运算工具类,下次直接调用即可

    public class BigDecimalUtil {
    
        private BigDecimalUtil(){
    
        }
    
    
        public static BigDecimal add(double v1,double v2){
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.add(b2);
        }
    
        public static BigDecimal sub(double v1,double v2){
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.subtract(b2);
        }
    
    
        public static BigDecimal mul(double v1,double v2){
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.multiply(b2);
        }
    
        public static BigDecimal div(double v1,double v2){
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小数
    
            //除不尽的情况
        }
    
    
    
    
    
    }
    

    相关文章

      网友评论

          本文标题:商业计算--BigDecimal

          本文链接:https://www.haomeiwen.com/subject/lklkkftx.html