大數據運算BigInteger和BigDecimal實現精確加減運算

超級大的整數運算,超過long取值範圍整數,封裝成BigInteger類型的對象
四則運算代碼:

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);
}

在程序中執行下列代碼
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類型在運算中很容易丟失精度,造成數據的不準確性
建議浮點數據以字符串形式給出,因爲參數結果是可以預知的
實現加法減法乘法代碼如下:

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);

對於浮點數據的除法運算,和整數不同,可能出現無限不循環小數,因此需要對所需要的位數進行保留和選擇舍入模式
這裏寫圖片描述
int scale:保留幾位小數 int roundingMode:保留模式
這裏寫圖片描述
BigDecimal a = new BigDecimal(“1.301”);
BigDecimal b = new BigDecimal(“101”);
BigDecimal c = a.divide(b,2,BigDecimal.ROUND_HALF_UP);//四捨五入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章