標籤:建議 大數 最大 高精度運算 long divide 1.3 減法 system
大資料運算BigInteger
java中long型為最大整數類型,對於超過long型的資料如何去表示呢.在Java的世界中,超過long型的整數已經不能被稱為整數了,它們被封裝成BigInteger對象.在BigInteger類中,實現四則運算都是方法來實現,並不是採用運算子.
BigInteger類的構造方法:
BigInteger b = new BigInteger(str);
構造方法中,採用字串的形式給出整數
四則運算代碼:
public static void main(String[] args) {
//大資料封裝為BigInteger對象
BigInteger big1 = new BigInteger("12345678909876543210");
BigInteger big2 = new BigInteger("98765432101234567890");
//add實現加法運算
BigInteger bigAdd = big1.add(big2);
//subtract實現減法運算
BigInteger bigSub = big1.subtract(big2);
//multiply實現乘法運算
BigInteger bigMul = big1.multiply(big2);
//divide實現除法運算
BigInteger bigDiv = big2.divide(big1);
}
BigDecimal
在程式中執行下列代碼,會出現什麼問題?
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
double和float類型在運算中很容易丟失精度,造成資料的不準確性,Java提供我們BigDecimal類可以實現浮點數據的高精度運算
構造方法如下:
BigDecimal b = new BigDecimal(str);
建議浮點數據以字串形式給出,因為參數結果是可以預知的
實現加法減法乘法代碼如下:(運算方法與BigInteger一致)
public static void main(String[] args) {
//大資料封裝為BigDecimal對象
BigDecimal big1 = new BigDecimal("0.09");
BigDecimal big2 = new BigDecimal("0.01");
//add實現加法運算
BigDecimal bigAdd = big1.add(big2);
BigDecimal big3 = new BigDecimal("1.0");
BigDecimal big4 = new BigDecimal("0.32");
//subtract實現減法運算
BigDecimal bigSub = big3.subtract(big4);
BigDecimal big5 = new BigDecimal("1.105");
BigDecimal big6 = new BigDecimal("100");
//multiply實現乘法運算
BigDecimal bigMul = big5.multiply(big6);
對於浮點數據的除法運算,和整數不同,可能出現無限不迴圈小數,因此需要對所需要的位元進行保留和選擇舍入模式
BigDecimal b = big1.divide(big2,保留小數點後面幾位,舍入模式)
// BigDecimal b = big1.divide.(big2,2,BigDecimal.ROUND_DOWN)
java ->大資料運算(BigInteger)