1. 程式人生 > 其它 >Java中實現最大的整數和實現整數的精確運算

Java中實現最大的整數和實現整數的精確運算

Java中實現最大的整數

  • Java中存在的問題:在java中的基本整數資料型別long型別最大表示範圍為:-263 ~ 263-1,若想要使用更大的數值可使用BigInteger來表達
  • 問題的解決:
// 若希望表示比long類型範圍還大的整數資料,則需要藉助java.math.BigInteger型別描述。
BigInteger ba = new BigInteger("1000000");
BigInteger bb = new BigInteger("2000000");

// 實現加法
BigInteger add = ba.add(bb);
System.out.println("add = " + add);

// 實現減法
BigInteger subtract = ba.subtract(bb);
System.out.println("subtract = " + subtract);

// 實現乘法
BigInteger multiply = ba.multiply(bb);
System.out.println("multiply = " + multiply);

// 實現除法
BigInteger divide = bb.divide(ba);
System.out.println("divide = " + divide);

// 實現除法得商與取模得餘
BigInteger[] bigIntegers = bb.divideAndRemainder(ba);
String s = Arrays.toString(bigIntegers);
System.out.println("s = " + s); 

Java中實現整數的精確運算

  • 問題演示
double num = 0.1 + 0.2;
System.out.println("num = " + num); // num = 0.30000000000000004
  • 問題解決
// 解決double運算的誤差
BigDecimal na = new BigDecimal("0.1"); // 注 切記使用雙引號包裹數值
BigDecimal nb = new BigDecimal("0.2");

// 實現加法
BigDecimal add = na.add(nb);
System.out.println("add = " + add);

// 實現減法
BigDecimal subtract = nb.subtract(na);
System.out.println("subtract = " + subtract);

// 實現乘法
BigDecimal multiply = na.multiply(nb);
System.out.println("multiply = " + multiply);

// 實現除法
BigDecimal divide = na.divide(nb);
System.out.println("divide = " + divide);