一、BigInteger基本用法
BigInteger類位於java.math包中,是一種可以處理任意精度整數的類,可以處理包含數百位甚至數千位的整數。BigInteger類中定義了多個操作BigInteger對象的方法,常用的方法有:
1. BigInteger(String val):通過字元串創建一個BigInteger對象。
BigInteger num = new BigInteger("123456789");
2. BigInteger add(BigInteger val):將此BigInteger的值與val的值相加,返回一個新的BigInteger對象。
BigInteger num1 = new BigInteger("1234567890"); BigInteger num2 = new BigInteger("9876543210"); BigInteger result = num1.add(num2); System.out.println(result.toString()); //輸出:11111111100
3. BigInteger subtract(BigInteger val):將此BigInteger的值與val的值相減,返回一個新的BigInteger對象。
BigInteger num1 = new BigInteger("9876543210"); BigInteger num2 = new BigInteger("1234567890"); BigInteger result = num1.subtract(num2); System.out.println(result.toString()); //輸出:8641975320
4. BigInteger multiply(BigInteger val):將此BigInteger的值與val的值相乘,返回一個新的BigInteger對象。
BigInteger num1 = new BigInteger("123456789"); BigInteger num2 = new BigInteger("987654321"); BigInteger result = num1.multiply(num2); System.out.println(result.toString()); //輸出:121932631137021426
5. BigInteger divide(BigInteger val):將此BigInteger的值與val的值相除,返回一個新的BigInteger對象。
BigInteger num1 = new BigInteger("9876543210"); BigInteger num2 = new BigInteger("123456789"); BigInteger result = num1.divide(num2); System.out.println(result.toString()); //輸出:79
二、BigInteger高級用法
BigInteger類可以進行取模、比較大小、冪運算等高級操作。
1. BigInteger mod(BigInteger val):將此BigInteger的值與val的值取模,返回一個新的BigInteger對象。
BigInteger num1 = new BigInteger("9876543210"); BigInteger num2 = new BigInteger("123456789"); BigInteger result = num1.mod(num2); System.out.println(result.toString()); //輸出:24660942
2. BigInteger compareTo(BigInteger val):將此BigInteger與val進行比較,返回-1、0或1。如果此BigInteger小於val,則返回-1;如果此BigInteger等於val,則返回0;如果此BigInteger大於val,則返回1。
BigInteger num1 = new BigInteger("9876543210"); BigInteger num2 = new BigInteger("123456789"); int result = num1.compareTo(num2); System.out.println(result); //輸出:1
3. BigInteger pow(int exponent):將此BigInteger的值乘以自身exponent次冪,返回一個新的BigInteger對象。
BigInteger num1 = new BigInteger("123456789"); BigInteger result = num1.pow(3); System.out.println(result.toString()); //輸出:188167637178915486089021
三、BigInteger使用注意事項
在處理極大整數的時候,常常會使用BigInteger類進行求解。但是需要注意以下幾點:
1. 由於BigInteger是一個類,因此不能使用運算符直接進行數值計算,需要使用它提供的add、subtract、multiply、divide等方法進行計算。
//錯誤示例 BigInteger a = new BigInteger("1234567890"); BigInteger b = new BigInteger("9876543210"); BigInteger c = a + b; //編譯錯誤 //正確示例 BigInteger a = new BigInteger("1234567890"); BigInteger b = new BigInteger("9876543210"); BigInteger c = a.add(b); //調用add方法進行相加
2. 在比較兩個BigInteger大小時,不要使用「==」或「!=」運算符,需要使用compareTo方法。
//錯誤示例 BigInteger a = new BigInteger("1234567890"); BigInteger b = new BigInteger("9876543210"); if (a > b) {} //編譯錯誤 //正確示例 BigInteger a = new BigInteger("1234567890"); BigInteger b = new BigInteger("9876543210"); if (a.compareTo(b) > 0) {} //調用compareTo方法進行比較
3. BigInteger是一個不可變類,因此任何的算術運算都不會對原來的BigInteger對象造成改變,而是返回一個新的對象。
BigInteger a = new BigInteger("1234567890"); BigInteger b = new BigInteger("9876543210"); a.add(b); System.out.println(a.toString()); //輸出:1234567890
四、小結
BigInteger提供了一種處理大整數的有效方法,可以在沒有精度限制的情況下對整數進行計算。但需要注意的是,在使用BigInteger進行數值計算時,需要使用它提供的方法進行計算,比如add、subtract、multiply、divide等方法,並且使用compareTo方法進行比較大小。
如果處理的精度在double或者long範圍內,則可以使用原生的double和long類型進行計算,因為這些類型有更高的效率。
原創文章,作者:QFGWO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/328955.html