1. 程式人生 > >Java--Big Number操作(BigInteger類和BigDecimal類)

Java--Big Number操作(BigInteger類和BigDecimal類)

BigInteger類

java.math.BigInteger 類的使用場景是大整數操作。它提供類似所有Java的基本整數運算子和java.lang.Math中的所有相關的方法的操作,如+、-、*、/、%、&、|、mod、>>、<<,以及min()、max()等等。只不過它操作的整數都是極其大的,為科學計算提供了很大的便利。比如下面的程式碼就是計算20000000000000000000 * 30000000000000000000,利用BigInteger可以很容易的計算出來結果。

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        BigInteger biga = new BigInteger(a);
        BigInteger bigb = new BigInteger(b);
        BigInteger result = biga.multiply(bigb);
        System.out.println(result);
    }
}

//輸入
30000000000000000000
20000000000000000000
//輸出
600000000000000000000000000000000000000

建構函式

BigInteger提供了6個建構函式,方便取到一個大數。上方的程式碼就是利用形參是String的建構函式來將傳入的字串轉換為BigInteger型別。常用的構造方法如下:

  1. BigInteger(String val):將10進位制字串轉換為BigInteger
  2. BigInteger(byte[] val):將只含有0和1的bite[]陣列轉換為2進製表示的BigInteger值
  3. BigInteger(int numBits, Random rnd):構造一個隨機生成的BigInteger,均勻分佈在範圍0到 (2^numBits - 1)
  4. BigInteger(String val, int radix):將字串轉換為指定進位制的BigInteger

類方法

BigInteger的類方法有40多個,覆蓋了簡單四則運算、位運算、科學計算、雜湊運算、型別轉換等。下面是最最常用的方法:

  1. BigInteger abs() :求絕對值
  2. BigInteger add(BigInteger val):計算和
  3. BigInteger subtract(BigInteger val):計算差
  4. BigInteger multiply(BigInteger val):計算積
  5. BigInteger divide(BigInteger val):計算商
  6. BigInteger pow(int exponent) :計算冪
  7. BigInteger remainder(BigInteger val):計算餘數
  8. BigInteger max(BigInteger val):返回較大值
  9. BigInteger min(BigInteger val):返回較小值

BigDecimal類

java.math.BigDecimal 類提供用於算術,刻度操作,舍入,比較,雜湊演算法和格式轉換操作。該類的使用範圍是小數運算。我們都知道Java的float和double是浮點數,直接進行比較操作、運算操作都會有誤差,BigDecimal就不會出現這種情況。

toString()方法提供BigDecimal的規範表示。它使使用者可以完全控制舍入行為。提供用於操作BigDecimal規模兩種型別的操作:

  • 縮放/舍入操作
  • 小數點移動操作。

日常Coding中我還沒用到過這個類,需要使用的時候再檢視文件吧。不過這個類的使用方法應該和BigInteger類類似,只不過支援小數操作,在方法頭中會多一些形參來控制精度或其他控制。