zoukankan      html  css  js  c++  java
  • java基础——大整数和大浮点数

    Java中的整型int和浮点型float、double,他们存放数据的范围有限,当需要计算更大的数据是可以考虑用java.math.BigInteger和java.math.BigDecimal

    BigInteger【任意精度的整数运算】

      1.初始化

    BigInteger big1 = new BigInteger("1");
    BigInteger big2 = BigInteger.valueOf(1);

      2.四则运算

       2.1 加

        

    /**
         * add(加):+
         * @param v1    加数
         * @param v2    加数
         * @return*/
        public static int add(int v1,int v2) {
            BigInteger x1 = new BigInteger(Integer.toString(v1));
            BigInteger x2 = new BigInteger(Integer.toString(v2));
            return x1.add(x2).intValue();
        }
        
        public static int add(String v1,String v2) {
            BigInteger x1 = new BigInteger(v1);
            BigInteger x2 = new BigInteger(v2);
            return x1.add(x2).intValue();
        }

      2.2 减

    /**
         * subtract(减):-
         * @param v1    被减数
         * @param v2    减数
         * @return*/
        public static int subtract(int v1,int v2) {
            BigInteger x1 = new BigInteger(Integer.toString(v1));
            BigInteger x2 = new BigInteger(Integer.toString(v2));
            return x1.subtract(x2).intValue();
        }
        
        public static int subtract(String v1,String v2) {
            BigInteger x1 = new BigInteger(v1);
            BigInteger x2 = new BigInteger(v2);
            return x1.subtract(x2).intValue();
        }

      2.3 乘

    /**
         * multiply(乘):*
         * @param v1    乘数
         * @param v2    被乘数
         * @return*/
        public static int multiply(int v1,int v2) {
            BigInteger x1 = new BigInteger(Integer.toString(v1));
            BigInteger x2 = new BigInteger(Integer.toString(v2));
            return x1.multiply(x2).intValue();
        }
        
        public static int multiply(String v1,String v2) {
            BigInteger x1 = new BigInteger(v1);
            BigInteger x2 = new BigInteger(v2);
            return x1.multiply(x2).intValue();
        }

      2.4 除

    /**
         * divide(除):/
         * @param v1
         * @param v2
         * @return
         */
        public static int divide(int v1,int v2)    {
            BigInteger x1 = new BigInteger(Integer.toString(v1));
            BigInteger x2 = new BigInteger(Integer.toString(v2));
            return x1.divide(x2).intValue();
        }
        
        public static int divide(String v1,String v2)    {
            BigInteger x1 = new BigInteger(v1);
            BigInteger x2 = new BigInteger(v2);
            return x1.divide(x2).intValue();
        }

    BigDecimal【任意精度的浮点数运算】

    1.加

     /**
         * 提供精确的加法运算。
         * 
         * @param v1 被加数
         * @param v2 加数
         * @return 两个参数的和
         */
        public static double add(double v1, double v2) {
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.add(b2).doubleValue();
        }
        
        //重载方法,v1,v2必须是可以转化为数字的字符串
        public static String add(String v1, String v2) {
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.add(b2).toString();
        }

    2.减

     /**
         * 提供精确的减法运算。
         * 
         * @param v1 被减数
         * @param v2 减数
         * @return 两个参数的差
         */
        public static double sub(double v1, double v2) {
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.subtract(b2).doubleValue();
        }
        
        public static String sub(String v1, String v2) {
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.subtract(b2).toString();
        }

    3.乘

     /**
         * 提供精确的乘法运算。
         * 
         * @param v1 被乘数
         * @param v2 乘数
         * @return 两个参数的积
         */
        public static double mul(double v1, double v2) {
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.multiply(b2).doubleValue();
        }
        
        public static String mul(String v1, String v2) {
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.multiply(b2).toString();
        }

    4.除

    /**
         * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后DEF_DIV_SCALE位,以后的数字四舍五入。
         * 
         * @param v1 被除数
         * @param v2 除数
         * @return 两个参数的商
         */
        public static double div(double v1, double v2) {
            return div(v1, v2, DEF_DIV_SCALE);
        }
        
        /**
         * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
         * 
         * @param v1 被除数
         * @param v2 除数
         * @param scale 表示表示需要精确到小数点以后几位。
         * @return 两个参数的商
         */
        public static double div(double v1, double v2, int scale) {
            if (scale < 0) {
                throw new IllegalArgumentException("The scale must be a positive integer or zero");
            }
            BigDecimal b1 = new BigDecimal(Double.toString(v1));
            BigDecimal b2 = new BigDecimal(Double.toString(v2));
            return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
        }
        
        public static String div(String v1, String v2) {
            return div(v1, v2, DEF_DIV_SCALE);
        }
        
        public static String div(String v1, String v2, int scale) {
            if (scale < 0) {
                throw new IllegalArgumentException("The scale must be a positive integer or zero");
            }
            BigDecimal b1 = new BigDecimal(v1);
            BigDecimal b2 = new BigDecimal(v2);
            return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString();
        }
  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/zhouj/p/7879890.html
Copyright © 2011-2022 走看看