1. 程式人生 > >JAVA高精度演算法 BigInteger用法詳解 大數四則運算

JAVA高精度演算法 BigInteger用法詳解 大數四則運算

在用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;
            }
        }
    }
}