大數
外觀
| 瀏覽 語言基礎 主題: |
具有最大值範圍的整數基本型別是long,範圍從 -263 到 263-1。如果你需要更大或更小的值,你必須使用java.math包中的BigInteger類。一個BigInteger物件可以表示任何整數(只要計算機的記憶體能容納),因為它沒有對映到任何基本型別。同樣地,你需要使用BigDecimal類來表示較大的小數。
然而,由於這些操作比基本型別要慢得多,所以建議在可能的情況下使用基本型別。
BigInteger
[edit | edit source]BigInteger類表示幾乎任意大小的整數。與其他物件一樣,需要構造它們。與普通數字不同,BigInteger表示一個不可變物件 - BigInteger類中使用的方法將返回一個新的BigInteger副本。
要例項化一個BigInteger,你可以從位元組陣列或字串建立它。例如
程式碼節 3.23:1018,或者說 10 億億。太大而無法放入一個 long。
BigInteger i = new BigInteger("1000000000000000000");
|
BigInteger 不能使用正常的Java 運算子。它們使用類提供的函式。
程式碼節 3.24:乘法和加法。
BigInteger a = new BigInteger("3");
BigInteger b = new BigInteger("4");
// c = a^2 + b^2
BigInteger c = a.multiply(a).add(b.multiply(b));
|
程式碼節 3.25:轉換。
BigInteger aBigInteger = new BigInteger("3");
long aLong = aBigInteger.longValue();
|
BigDecimal
[edit | edit source]BigInteger類不能處理小數。BigDecimal類表示任意精度的浮點數。它由一個BigInteger和一個比例值(由一個 32 位整數表示)組成。
