Java:大数字运算

一.BigInteger类

package xun;

import java.math.*;

public class Myclass1 {
	public static void main(String[] args) {
	 //针对大整数的处理类,支持任何精度的整数。除了基本的加减乘除操作,还提供了绝对值,相反数,最大公约数,质数判断等操作。
		System.out.println("----BigInteger类----");
		//参数中的双引号不能省略,因为参数是以字符串的形式存在的。
		BigInteger bigInstance = new BigInteger("4");
		System.out.println("将参数转换为指定的类型操作:"+bigInstance.floatValue());
		System.out.println("加法操作:"+bigInstance.add(new BigInteger("6")));
		System.out.println("减法操作:"+bigInstance.subtract(new BigInteger("2")));
		System.out.println("乘法操作:"+bigInstance.multiply(new BigInteger("6")));
		System.out.println("除法操作:"+bigInstance.divide(new BigInteger("6")));
		System.out.println("取商操作:"+bigInstance.divideAndRemainder(new BigInteger("3"))[0]);
		System.out.println("取余操作:"+bigInstance.divideAndRemainder(new BigInteger("3"))[1]);
		System.out.println("k次方操作:"+bigInstance.pow(2));
		System.out.println("相反数操作:"+bigInstance.negate());
		//若n为负数,则做右移操作.
		System.out.println("左移操作:"+bigInstance.shiftLeft(2));
		//若n为负数,则做左移操作.
		System.out.println("右移操作:"+bigInstance.shiftRight(2));
		System.out.println("与操作:"+bigInstance.and(new BigInteger("6")));
		System.out.println("或操作:"+bigInstance.or(new BigInteger("2")));
		//r与val相等输出0,r<val输出-1,r>val输出1.
		System.out.println("数字比较操作:"+bigInstance.compareTo(new BigInteger("4")));
		System.out.println("判断数字是否相等操作:"+bigInstance.equals(new BigInteger("6")));
		System.out.println("返回较小值操作:"+bigInstance.min(new BigInteger("6")));
		System.out.println("返回较大值操作:"+bigInstance.max(new BigInteger("2")));
		System.out.println("返回绝对值操作:"+bigInstance.abs());
		System.out.println("返回最大公约数操作:"+bigInstance.gcd(new BigInteger("2")));
		//BigInteger构造方法转换进制
		//十进制数字20转换成2进制
	    String str1 = new BigInteger("20",10).toString(2);
		//十进制数字20转换成8进制
	    String str2 = new BigInteger("20",10).toString(8);
		//十进制数字20转换成16进制
	    String str3 = new BigInteger("20",10).toString(16);
		//八进制数字110转换成16进制
	    String str4 = new BigInteger("110",8).toString(16);
		//二进制数字10100转换成10进制
	    String str5 = new BigInteger("10100",2).toString(10);
	    System.out.println(str1);
	    System.out.println(str2);
	    System.out.println(str3);
	    System.out.println(str4);
	    System.out.println(str5);
	}
}

二.BigDecimal类

  (1)BigDecimal类的常用的几个构造方法

  1. BigDecimal(int):将int表示形式转换为BigDecimal对象
  2. BigDecimal(String) :将字符串表示形式转换为BigDecimal对象
  3. BigDecimal(double):将double表示形式转换为BigDecimal对象

(2)BigDecimal类常用方法

  1. add(BigDecimal):BigDecimal对象中的值相加,返回BigDecimal对象
  2. divide(BigDecimal):BigDecimal对象中的值相除,返回BigDecimal对象
  3. toString():将BigDecimal对象中的值转换成字符串
  4. subtract(BigDecimal):BigDecimal对象中的值相减,返回BigDecimal对象
  5. multiply(BigDecimal):BigDecimal对象中的值相乘,返回BigDecimal对象
  6. doubleValue():将BigDecimal对象中的值转换成双精度数
  7. floatValue():将BigDecimal对象中的值转换成单精度数
  8. longValue():将BigDecimal对象中的值转换成长整数
  9. intValue():将BigDecimal对象中的值转换成整数
    package xun;
    
    import java.math.*;
    
    import org.omg.PortableServer.ID_ASSIGNMENT_POLICY_ID;
    
    public class Myclass1 {
    	public BigDecimal mul(double num1,double num2)
    	{
    		 BigDecimal b1= new BigDecimal(num1);
    		 BigDecimal b2= new BigDecimal(num2);
    		 return b1.multiply(b2);
    	}
    	public BigDecimal sub(double num1,double num2)
    	{
    		 BigDecimal b1= new BigDecimal(Double.toString(num1));
    		 BigDecimal b2= new BigDecimal(Double.toString(num2));
    		 return b1.subtract(b2);
    	}
    	public BigDecimal div(double num1,double num2)
    	{
    	return div(num1,num2,8);
    	}
    	//定义除法,参数分别为除数,被除数,商后面小数点位数
    	public BigDecimal div(double num1,double num2,int b)
    	{
    		if(b<0)
    		{
    			System.out.println("ERROR:b必须大于0");
    		}
    		BigDecimal b1=new BigDecimal(Double.toString(num1)); 
    		BigDecimal b2=new BigDecimal(Double.toString(num2));
    		//调用除法方法,保留b位小数点并将结果四舍五入。
    		return b1.divide(b2,b,BigDecimal.ROUND_HALF_UP);
    	}
    	public static void main(String[] args) {
    	    System.out.println("----BigDecimal类----");
    		//针对大数的处理类,加入了小数的概念,支持任何精度的定点数
    	    BigDecimal b= new BigDecimal(2);
    	    System.out.println("加法操作:"+b.add(new BigDecimal(2)));
    	    Myclass1 a=new Myclass1();
    	    System.out.println("自定义减法操作:"+a.mul(6.0,3.9));
    	    System.out.println("自定义乘法操作:"+a.sub(8.0,3.9));
    	    System.out.println("自定义除法操作:"+a.div(8.0,4.0,3));
    	    System.out.println("自定义除法操作:"+a.div(8.0,2.0));
    	}
    }

     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值