zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    26个Jquery使用小技巧
    jQuery之浮动窗口
    Visual Studio 2010 TFS指南
    Python
    HTML5小菜
    记一次重构经历【转载】
    Python学习笔记
    Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列
    搜索分词实现
    UML概要
  • 原文地址:https://www.cnblogs.com/SasaL/p/10131290.html
Copyright © 2011-2022 走看看