JAVA高精度演算法 BigInteger用法詳解 大數四則運算
阿新 • • 發佈:2018-12-07
在用C或者C++處理大數時感覺非常麻煩,但是在Java中有兩個類BigInteger和BigDecimal分別表示大整數類和大浮點數類,至於兩個類的物件能表示最大範圍不清楚,理論上能夠表示無線大的數,只要計算機記憶體足夠大。
這兩個類都在java.math.*包中,因此每次必須在開頭處引用該包。
自我感覺有時候用JAVA AC題比C/C++還要快,java內部有功能強大的內部類,NICE!
整數的運算 BigInteger
小數的運算 BigDecimal
BIgInteger:
Ⅰ基本函式:
1.valueOf(parament); 將引數轉換為制定的型別
比如 int a=3;
BigInteger b=BigInteger.valueOf(a);
則b=3;
String s=”12345”;
BigInteger c=BigInteger.valueOf(s);
則c=12345;
2.add(); 大整數相加
BigInteger a=new BigInteger(“23”);
BigInteger b=new BigInteger(“34”);
a. add(b);
3.subtract(); 相減
4.multiply(); 相乘
5.divide(); 相除取整
6.remainder(); 取餘
7.pow(); a.pow(b)=a^b
8.gcd(); 最大公約數
9.abs(); 絕對值
10.negate(); 取反數
11.mod(); a.mod(b)=a%b=a.remainder(b);
12.max(); min();
13.punlic int comareTo();
14.boolean equals(); 是否相等
15.BigInteger建構函式:
一般用到以下兩種:
BigInteger(String val);
附題一道,供大家理解:
import java.math.BigInteger; import java.util.Scanner; /** * @author * @date 2018/11/21 - 16:34 */ public class Main3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ String str = in.next(); int len = str.length(); char arr[] = new char[len]; int a=0; for (int i = 0; i < len; i++) { arr[i]=str.charAt(i); if(arr[i]=='+'||arr[i]=='-'||arr[i]=='*'||arr[i]=='/'){ a=i; } } String str1 = null,str2=null; str1=str.substring(0,a); str2=str.substring(a+1,len); BigInteger b=new BigInteger(str1); BigInteger c= new BigInteger(str2); switch (arr[a]){ case '+': System.out.println(b.add(c));break; case '-': System.out.println(b.subtract(c));break; case '*': System.out.println(b.multiply(c));break; case '/': System.out.println(b.divide(c));break; } } } }