Java中實現最大的整數和實現整數的精確運算
阿新 • • 發佈:2022-04-04
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);