Java大數相乘(使用BigInteger和BigDecimal)

押切徹發表於2020-11-29


1.BigInteger和BigDecimal

在 Java 中提供了用於大數字運算的類,即 java.math.BigInteger 類和 java.math.BigDecimal 類。這兩個類用於高精度計算,其中 BigInteger 類是針對整型大數字的處理類,而 BigDecimal 類是針對大小數的處理類。

在運算中 BigInteger 型別可以準確地表示任何大小的整數值,它可以表示的範圍比integer大得多了。
BigInteger類的常用運算方法:

add(BigInteger val)	做加法運算
subtract(BigInteger val)	做減法運算
multiply(BigInteger val)	做乘法運算
divide(BigInteger val)	做除法運算
remainder(BigInteger val)	做取餘數運算
divideAndRemainder(BigInteger val)	做除法運算,返回陣列的第一個值為商,第二個值為餘數
pow(int exponent)	做引數的 exponent 次方運算
negate()	取相反數
shiftLeft(int n)	將數字左移 n 位,如果 n 為負數,則做右移操作
shiftRight(int n)	將數字右移 n 位,如果 n 為負數,則做左移操作
and(BigInteger val)	做與運算
or(BigInteger val)	做或運算
compareTo(BigInteger val)	做數字的比較運算
equals(Object obj)	當引數 obj 是 Biglnteger 型別的數字並且數值相等時返回 true, 其他返回 false
min(BigInteger val)	返回較小的數值
max(BigInteger val)	返回較大的數值

BigDecimal類可以精確的進行計算,在計算中由於浮點數float和double本身儲存的關係不能做到完全的準確,因此在商業應用中BigDecimal可以提供精確得到小數計算。
資料:Java BigDecimal詳解

2.大數相乘的題

在這裡插入圖片描述

import java.math.BigInteger;
import java.util.*;

class Main{
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
        BigInteger a =input.nextBigInteger();
        BigInteger b =input.nextBigInteger();
        long c = input.nextLong();
		BigInteger fin = a.multiply(b);
		BigInteger ten = new BigInteger("10");
		BigInteger zero = new BigInteger("0");
		int count = 0;
		while(fin.remainder(ten).equals(zero)) {
			count++;
			fin = fin.divide(ten);
		}
		if(count==c) {
			System.out.println("Well done!");
		}else {
			System.out.println("Doubt!");
		}
	}
}

相關文章