Java大數類介紹


java能處理大數的類有兩個高精度大整數BigInteger 和高精度浮點數BigDecimal,這兩個類位於java.math包內,要使用它們必須在類前面引用該包:import java.math.BigInteger;和import java.math.BigDecimal;或者import java.math.*;

以下從幾個方面對BigIntegerBigDecima做一個簡單的比較:

一.常量

BigInteger:ONE,ZERO,TEN分別代表1,0,10.

其定義類似於:public static final BigInteger ONE = valueOf(1);

BigDecimal:除了以上三個常量外還有8個關於舍入的常量:ROUND_UP,ROUND_DOWN,ROUND_CEILING,ROUND_FLOOR,ROUND_HALF_UP,

ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UNNECESSARY。詳細舍入模式,請查閱Java API。

二.聲明賦值

BigInteger:BigInteger bi = new BigInteger(byte[] val) ;

new BigInteger(int signum, byte[] magnitude) ;

new BigInteger(int bitLength, int certainty, Random rnd) 。

new BigInteger(int numBits, Random rnd) 。

new BigInteger(String val) 。

new BigInteger(String val, int radix) ;

構造函數僅僅能接受這幾種類型,,比方這樣定義就是錯誤的:BigInteger bi = new BigInteger(100);

或:BigInteger bi = BigInteger.valueOf(100);

數組定義與基本類型類似.

BigDecimal:BigDecimal bd = new BigDecimal(100);或:BigDecimal bd = BigDecimal.valueOf(100);

BigDecimal的構造函數比BigInteger多一些,感覺用起來更方便些

順便說一下,java.util包中的Scanner類實現了nextBigInteger()和nextBigDecimal()方法,能夠用來讀入控制台輸入的BigInteger和BigDecimal.給個樣例:

三.相關函數

add(),subtract(),pow(),abs(),multiply()等等這一類就不介紹了,奇妙的是probablePrime(int bitLength, Random rnd),  nextProbablePrime()這一類竟然和素數扯得上關系。

BigDecimal關於格式控制的方法多了幾個,這對處理各種不同格式的輸出是非常實用的。

stripTraillingZeros():把不影響數值大小的0全去掉。

1.50 ->1.5;

1.00->1;

這功能非常實用吧。

大家都知道JAVA的類一般都要帶toString這種方法的。BigDecimal則有toString,toPlainString和toEngineeringString三種表示成字符串的方法。

以下是這三種方法各自的特點:

toString: using scientific notation if an exponent is needed;

toEngineeringString:using engineering notation if an exponent is needed.

toPlainString:without an exponent field.


 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM