轉自:https://blog.csdn.net/stffer/article/details/46382949 有修改 關於BigInteger類更詳細的用法請移步官方文檔
package practice;
import java.util.*;
import java.io.*;
import java.math.*;
import java.math.*;
public class Main {
public static void main(String []args) {
Scanner sc=new Scanner(System.in);
BigInteger a=sc.nextBigInteger();
BigInteger b=sc.nextBigInteger();
int n=sc.nextInt();
BigInteger c=BigInteger.ONE;
BigDecimal d=sc.nextBigDecimal();
BigInteger e=sc.nextBigInteger();
String str=sc.nextLine();
/*
//d為int型,a,b,c都為大數
c=a.add(b); // 相加
c=a.subtract(b); // 相減
c=a.multiply(b); // 相乘
c=a.divide(b); // 相除取整
c=a.gcd(b); // 最大公約數
c=a.remainder(b); // 取余
c=a.mod(b); // a mod b
c=a.abs(); // a的絕對值
c=a.negate(); // a的相反數
c=a.pow(d); // a的b次冪 d為int型
c=a.max(b); // 取a,b中較大的
c=a.min(b); // 取a,b中較小的
d=a.compareTo(b); // 比較a與b的大小 d=-1小於 d=0等於 d=1大於 d為int型
a.equals(b); // 判斷a與b是否相等 相等返回true 不相等返回false
*/
//加減乘除add,subtract,multiply,divide
System.out.println(a.add(b));
System.out.println(a.subtract(b));
System.out.println(a.multiply(b));
System.out.println(a.divide(b));
//階乘
//注意BigInteger.valueOf()的使用
for(int i=1;i<=n;i++) {
c=c.multiply(BigInteger.valueOf(i));
}
System.out.println(c);
//比較大小
int flag=a.compareTo(b);
if(flag==-1) {
System.out.println("a<b");
} else if(flag==0) {
System.out.println("a=b");
} else {
System.out.println("a>b");
}
//高精度冪
//stripTrailingZeros():返回數值上等於此小數,但從該表示形式移除所有尾部0的BigDecimal
//toPlainString():將BigDecimal轉換為字符串
//stratswith("c"):判斷該字符串是不是以字符c開頭的
//substring(st,en):返回該字符串減去下標在[st,en)的字符串
String res=d.pow(n).stripTrailingZeros().toPlainString();
if(res.startsWith("0")) {
res=res.substring(0,1);
}
System.out.println(res);
//大數的進制轉換
//先將字符串轉化為10進制大數,然后將大數轉化為2進制字符串
e=new BigInteger(str,10);
String tmp=e.toString(2);
/*
d=a.intValue(); // 將大數a轉換為 int 類型賦值給 d
e=a.longValue(); // 將大數a轉換為 long 類型賦值給 e
f=a.floatValue(); // 將大數a轉換為 float 類型賦值給 f
g=a.doubleValue(); // 將大數a轉換為 double 類型賦值給 g
s=a.toString(); // 將大數a轉換為 String 類型賦值給 s
a=BigInteger.valueOf(e); // 將 e 以大數形式賦值給大數 a e只能為long或int
*/
sc.close();
}
}
