標籤:
java.math.BigInteger系列教程(四)BigInteger的誕生原因
為什麼java裡面要出現BigInteger類型呢?相信很多人有這個疑問,其實原因很簡單,它可以表達更大範圍的數值,遠遠比long表示的最大值還要大的多數。在整數類型裡面,long可以表達最大值,如下所示:
1234567 |
public class Test{public static void main(String[] args){System.out.println(Long.MAX_VALUE);}} |
結果為:9223372036854775807
而使用BigInteger,則可以表示更大的值,理論上只要你記憶體足夠大,就能,如下面的例子:
12345678910 |
public class Test{public static void main(String[] args){BigInteger a= BigInteger.valueOf(9223372036854775807L);BigInteger b= BigInteger.valueOf(9223372036854775807L);BigInteger c=a.add(b);System.out.println(c.toString());}} |
結果為:18446744073709551614
因為BigInteger沒有重載"+","-","*",“/”, “%”這五個運算操作符,是不能直接進行資料運算的,需要調用它的相應方法:add,subtract,multiply,divide,remainder。
Java版本的是:
package t0816;import java.math.BigInteger; public final class BigN { public static BigInteger multiply(BigInteger m,int n) { BigInteger sn = new BigInteger(Integer.toString(n)); BigInteger sqy = m.multiply(sn); //大資料的加減乘除用的是add、subtract、multiply、divide,remainder。 return sqy; } public static String calcNN(int n) { if(n >= 0){ BigInteger one = new BigInteger(Integer.toString(1)); //1的初始化 for(int i=1;i <= n;i++) { one = multiply(one,i); //調用上面的累成函數;大資料的累成 } return one.toString(); } else return null; } public static void main(String arg[]) { //主函數 System.out.println(calcNN(13)); //這裡直接裝的13; }}
輸出:6227020800
HW—可怕的階乘n!__注意大資料函數的使用BigInteger