JAVA大数

JAVA大数常用操作总结:


基本声明:
声明大数:BigInteger a;
赋值:a=new BigInteger(str); //str是字符串
基本常量:
a=BigInteger.ZERO 0
b=BigInteger.ONE 1
c=BigInteger.TWO 2
d=BigInteger.TEN 10


基本操作:
加:a.add(b)
减:a.subtract(b)
乘:a.multiply(b)
除:a.divide() //相除取整
取余:a.remainder(b)
求幂:a.pow(b)=a^b
求最大公约数:a.gcd(b)
求绝对值:a.abs()
求相反数:a.negate()
最值:a.max(b) a.min(b)
转为字符串形式:a.toString()
大数比较:
a.equals(b); //如果a,b相等则返回true,否则返回false
a.comareTo(b); //a小于b时返回-1,等于时返回0,大于时返回1
大数输入:
Scanner cin=new Scanner(System.in);
BigInteger a=cin.nextBigInteger();
大数输出:
System.out.println(a);


代码如下:

import java.io.*;
import java.util.*;
import java.math.*;
public class Main {

	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
        Scanner cin=new Scanner(System.in);
        BigInteger a0=new BigInteger("123");//声明大数
        System.out.println(a0.toString());  //大数的字符串形式
        BigInteger a1=BigInteger.ZERO;      //赋值为0
        BigInteger a2=BigInteger.ONE;       //赋值为1
        BigInteger a3=BigInteger.TWO;       //赋值为2
        BigInteger a4=BigInteger.TEN;       //赋值为10
        System.out.println(a0.toString()+" "+a1.toString()+" "+a2.toString()+" "+a3.toString());
        BigInteger a=cin.nextBigInteger();  //大数的输入
        BigInteger b=cin.nextBigInteger();  
        System.out.println(a.add(b));       //a+b
        System.out.println(a.subtract(b));  //a-b
        System.out.println(a.multiply(b));  //a*b
        System.out.println(a.divide(b));    //a/b
        System.out.println(a.remainder(b)); //a%b
        System.out.println(a.gcd(b));       //a,b最大公约数
        System.out.println(a.abs());        //a的绝对值
        System.out.println(a.negate());     //a的相反数
        System.out.println(a.max(b));       //a,b中的最大值
        System.out.println(a.min(b));       //a,b中的最小值
        if(a.equals(b)==true)               //比较a,b是否相等
        {
        	System.out.println("a=b");
        }
        else
        {
        	System.out.println("a!=b");
        }
        if(a.compareTo(b)==0)               //比较a,b大小
        {
        	System.out.println("a=b");
        }
        else if(a.compareTo(b)==-1)
        {
        	System.out.println("a<b");
        }
        else if(a.compareTo(b)==1)
        {
        	System.out.println("a>b");
        }
	}

}


BigDecimal
用法和BigInteger大致一样
由于大浮点数精度太高就默认用科学计数法表示
stripTrailingZeros() :用于去除末尾多余的0
toPlainString(): 控制不使用科学计数法输出(转成不用科学计数法的字符串)
startwith()函数可用于匹配字符串头部
endwith()函数可用于匹配字符串尾部
附上poj1001代码

import java.io.*;
import java.util.*;
import java.math.*;
public class Main {

	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
        Scanner cin=new Scanner(System.in);
        BigDecimal a;
        int b;
        while(cin.hasNext())
        {
        	a=cin.nextBigDecimal();
        	b=cin.nextInt();
        	a=a.pow(b);
        	String str=a.stripTrailingZeros().toPlainString();
        	if(str.startsWith("0."))
        	{
        		str=str.substring(1,str.length());
        	}
        	System.out.println(str);
        }
	}

}

最后来张图镇楼
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值