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);
}
}
}
最后来张图镇楼