• java 大数据运算 BigInteger BigDecimal


    package cn.sasa.demo5;
    
    import java.math.BigDecimal;
    import java.math.BigInteger;
    
    public class BigDataDemo {
        public static void main(String[] args) {
            //BigInteger
            //数字太大,超过了long的范围
            //long num1 = 9999999999999999999999999999999999999999999999L;
            BigInteger num1 = new BigInteger("999999999999999999999999999999999477");
            BigInteger num2 = new BigInteger("77777597111111111111111117777");
            //加法
            BigInteger addNum = num1.add(num2);
            System.out.println(addNum);
            
            //减法
            BigInteger subNum = num1.subtract(num2);
            System.out.println(subNum);
            
            //乘法
            BigInteger mulNum = num1.multiply(num2);
            System.out.println(mulNum);
            
            //除法
            BigInteger divNum = num1.divide(num2);
            System.out.println(divNum);
            
            //BigDecimal
            //double 会造成精度不准确
    //        double num3 = 0.01 + 0.09;
    //        System.out.println(num3);//0.09999999999999999
    //        System.out.println(0.03-0.01);//0.019999999999999997
    //        System.out.println(1.0023 * 100);//100.22999999999999
    //        System.out.println(1.301 / 100);//0.013009999999999999
            
            BigDecimal deci1 = new BigDecimal("0.01");
            BigDecimal deci2 = new BigDecimal("0.09");
            
            BigDecimal addDeci = deci1.add(deci2);
            System.out.println(addDeci);//0.10
            
            BigDecimal deci3 = new BigDecimal("0.03");
            BigDecimal deci4 = new BigDecimal("0.01");
            BigDecimal subDeci = deci3.subtract(deci4);
            System.out.println(subDeci);//0.02
            
            BigDecimal deci5 = new BigDecimal("1.0023");
            BigDecimal deci6 = new BigDecimal("100");
            BigDecimal mulDeci = deci5.multiply(deci6);
            System.out.println(mulDeci);//100.2300
            
            BigDecimal deci7 = new BigDecimal("1.301");
            BigDecimal diviDeci = divideBigDecimal(deci7, deci3);
            System.out.println(diviDeci);
            
        }
        
        //BigDecimal 的除法运算
        static BigDecimal divideBigDecimal(BigDecimal num1, BigDecimal num2) {
            /**
             * BigDecimal 除不尽会抛异常,解决方式:
             * divide(divisor, scale, roundingMode)
             * divisor 除数
             * scale 保留几位小数
             * roundingMode 保留模式
             *   static int ROUND_UP  向上+1
             *   static int ROUND_DOWN 直接舍去
             *   static int ROUND_HALF_UP  >= 0.5 向上+1
             *   static int ROUND_HALF_DOWN   > 0.5 向上+1 ,否则直接舍去
             */
            @SuppressWarnings("deprecation")
            BigDecimal rs = num1.divide(num2, 2, BigDecimal.ROUND_DOWN); //jdk9 之后会警告这个方法已过期
            //BigDecimal rs = num1.divide(num2);
            return rs;
        }
    }
  • 相关阅读:
    目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
    课程不懂的问题
    自我介绍
    .net发送邮件代码示例
    清除HTML中的特殊字符
    Html特殊字符转义处理
    截取字符窜(区分中英文)
    截取需要的字符串(非字节处理)
    区分24小时和12小时的时间格式转换为
    时间戳转为时间
  • 原文地址:https://www.cnblogs.com/SasaL/p/10131290.html
Copyright © 2020-2023  润新知