跳轉到內容

大數

75% developed
來自華夏公益教科書,開放的書籍,開放的世界

瀏覽 語言基礎 主題:v  d  e )


具有最大值範圍的整數基本型別是long,範圍從 -263 到 263-1。如果你需要更大或更小的值,你必須使用java.math包中的BigInteger類。一個BigInteger物件可以表示任何整數(只要計算機的記憶體能容納),因為它沒有對映到任何基本型別。同樣地,你需要使用BigDecimal類來表示較大的小數。

然而,由於這些操作比基本型別要慢得多,所以建議在可能的情況下使用基本型別。

BigInteger

[edit | edit source]

BigInteger類表示幾乎任意大小的整數。與其他物件一樣,需要構造它們。與普通數字不同,BigInteger表示一個不可變物件 - BigInteger類中使用的方法將返回一個新的BigInteger副本。

要例項化一個BigInteger,你可以從位元組陣列或字串建立它。例如

Example 程式碼節 3.23:1018,或者說 10 億億。太大而無法放入一個 long。
BigInteger i = new BigInteger("1000000000000000000");

BigInteger 不能使用正常的Java 運算子。它們使用類提供的函式。

Example 程式碼節 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));

可以將它轉換為long,但long可能不夠大。

Example 程式碼節 3.25:轉換。
BigInteger aBigInteger = new BigInteger("3");
long aLong = aBigInteger.longValue();

BigDecimal

[edit | edit source]

BigInteger類不能處理小數。BigDecimal類表示任意精度的浮點數。它由一個BigInteger和一個比例值(由一個 32 位整數表示)組成。


Clipboard

待辦事項
新增一些類似於變數中的練習


華夏公益教科書