Java数字处理类 您所在的位置:网站首页 java大数乘法 Java数字处理类

Java数字处理类

2024-07-18 02:40| 来源: 网络整理| 查看: 265

Java中大数字的操作类:

        java.math.BigInteger         java.math.BigDecimal 1.BigInteger类

        Int的最大值为2^31-1,如果要处理更大的数,就必须用到BigInteger,BigInteger类中提供了加、减、乘、除、绝对值、相反数、最大公约数、判断是否为质数等方法。

        使用BigInteger类,可以实例化一个BigIngeger对象,并自动调用相应的构造函数。BigInteger有很多构造函数,但是最直接的一种方式是参数以字符串的形式代表要处理的数字。

语法:

        public BigInteger(String value); 

        将2转化为BigInteger类型:

        BigInteger twoInstance = new BigInteger("2");

BigInteger类中常用运算方法 运算方法功能描述public BigInteger add(BigInteger val)做加法运算public BigInteger subtract(BigInteger val)做减法运算public BigInteger multiply(BigInteger val)做乘法运算public BigInteger devide(BigInteger val)做除法运算public BigInteger remainder(BigInteger val)做取余操作public BigInteger[] divideAndRemainder(BigInteger val)用数组返回商和余数,结果数组中第一个值为商,第二个数为余数public BigInteger pow(int exponent)进行取参数的exponent操作public BigInteger negate()取相反数public BigInteger shiftLeft(int n)将数字左移n位,如果n为负数,做右移操作public BigInteger shiftRight(int n)将数字右移n位,如果n为负数,做左移操作public BigInteger and(BigInteger val)做与操作public BigInteger or(BigInteger val)做或操作public int compareTo(BigInteger val)做数字比较操作public boolean equals(Object x)当x是BigInteger类型的数字且数值相等时,返回true,否则返回falsepublic BigInteger min(BigInteger val)返回较小的数值public BigInteger max(BigInteger val)返回较大的数值 package MathInfo; import java.math.BigInteger; public class BigIntegerDemo { public static void main(String[] args) { BigInteger bigInstance = new BigInteger("4"); //将该数+2操作 System.out.println("加法操作:" + bigInstance.add(new BigInteger("2"))); //加法操作:6 //将该数-2操作 System.out.println("减法操作:" + bigInstance.subtract(new BigInteger("2"))); //减法操作:2 //将该数*2操作 System.out.println("乘法操作:" + bigInstance.multiply(new BigInteger("2"))); //乘法操作:8 //将该数➗2操作 System.out.println("除法操作:" + bigInstance.divide(new BigInteger("2"))); //除法操作:2 //该数÷3的商 System.out.println("取商操作:" + bigInstance.divideAndRemainder(new BigInteger("3"))[0]); //取商操作:1 //该大数字÷3的余数 System.out.println("大数字取余操作:" + bigInstance.divideAndRemainder(new BigInteger("3"))[1]); //大数字取余操作:1 //该大数字的2次方 System.out.println("该大数字的2次方:" + bigInstance.pow(2)); //该大数字的2次方:16 //该大数字的相反数 System.out.println("该大数字的相反数:" + bigInstance.negate()); //该大数字的相反数:-4 } }  2.BigDecimal类

        java.math.BigDecimal类支持任何精度的定点数,适用与float和double类型数据来做科学计算、货币计算等。

        BigDecimal型的数字可以用来做超大浮点数的运算,包括加、减、乘、除等,在所有运算中,除法是最复杂的,因为在除不尽的情况下,末尾小数点的处理需要被考虑。

2.1 构造方法:         2.1.1 public BigDecimal(double val)

                实例化时将双精度型转换为BigDecimal类型

        2.1.2 public BigDecimal(String val)

                实例化时将字符串型转换为BigDecimal类型       

BigDecimal类的常用方法 方法功能说明public BigDecimal add(BigDecimal augend)加法操作public BigDecimal subtract(BigDecimal subtrahend)减法操作public BigDecimal multiply(BigDecimal multiplicand)乘法操作public BigDecimal devide(BigDecimal divisor, int scale, int roundingMode)除法操作,参数分别代表:除数,商的小数点后的位数,近似处理模式

         BigDecimal类中的divide()方法有多种设置,用于返回商末位小数点的处理,如:

BigDecimal类中divide()方法的多种处理模式 模式含义BigDecimal.ROUND_UP商的最后一位若大于0,则向前进位,正负数都如此BigDecimal.ROUND_DOWN商的最后一位无论是什么数字,都省略BigDecimal.ROUND_CEILING商如果是正数,按照ROUND_UP处理,如果是负数,按照ROUND_DOWN处理。这2种模式的处理都会使近似值大于等于实际值BigDecimal.ROUND_FLOOR与ROUND_CEILING相反,商如果是正数,按照ROUND_DOWN处理,如果是负数,按照ROUND_CEILING处理。这2种模式的处理都会使近似值小于等于实际值BigDecimal.ROUND_HALF_DOWN对商进行四舍五入操作,如果商最后一位小于等于5,则做舍弃操作;若最后一位大于5,则做进位操作,如7.5≈7BigDecimal.ROUND_HALF_UP对商进行四舍五入操作,如果商最后一位小于5,则做舍弃操作;若最后一位大于等于5,则做进位操作,如7.5≈8BigDecimal.ROUND_HALF_EVEN如果商的倒数第二位为奇数,则按照ROUND_HALF_UP处理;如果商的倒数第二位为偶数,则按照ROUND_HALF_DOWN处理;如7.5≈8, 8.5≈8 /** * 实现加减乘除 */ package MathInfo; import java.math.BigDecimal; public class BigDecimalDemo { static final int location = 10; //定义加法 public BigDecimal add(double value1, double value2) { // BigDecimal b1 = new BigDecimal(value1); //不能用这种方法,最后相加结果小数位非常多,不精确 // BigDecimal b2 = new BigDecimal(value2); BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.add(b2); } //定义减法 public BigDecimal subTract(double value1, double value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.subtract(b2); } //定义乘法 public BigDecimal multiPly(double value1, double value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); return b1.multiply(b2); } //定义除法,参数为除数与被除数以及商小数点后位数 public BigDecimal myDivide(double value1, double value2, int b) { if (b < 0) { System.out.println("b必须大于等于0!"); } BigDecimal b1 = new BigDecimal(Double.toString(value1)); BigDecimal b2 = new BigDecimal(Double.toString(value2)); //调用divide方法,商后保留b位小数,并做四舍五入操作 return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP); } public BigDecimal myDivide(double value1, double value2) { return myDivide(value1, value2, location); } public static void main(String[] args) { BigDecimalDemo b = new BigDecimalDemo(); System.out.println("两个数字相加结果:" + b.add(-7.5, 8.9)); //两个数字相加结果:1.4 System.out.println("两个数字相减结果:" + b.subTract(8, 8.9)); //两个数字相减结果:-0.9 System.out.println("两个数字相乘结果:" + b.multiPly(8, -2)); //两个数字相乘结果:-16.00 System.out.println("两个数字相除结果:" + b.myDivide(10, 2)); //两个数字相除结果:5.0000000000 System.out.println("两个数字相除结果,保留后面5位小数:" + b.myDivide(10, 3, 5)); //两个数字相除结果,保留后面5位小数:3.33333 } }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有