Big Numbers
Info
Semua file yang ada pada contoh pada catatan ini ada pada package Ch3/J3_9_Big_Numbers
Jika presisi angka menggunakan basic int
atau floating-point tidak cukup, kita dapat merubah nilai tersebut ke class yang ada pada package java.math
: yaitu BigInteger dan BigDecimal. Class tersebut digunakan untuk memanipulasi digit angka yang panjang .
Gunakan static method valueOf
untuk merubah angka biasa kedalam big number:
Code
package Ch3.J_3_9_BigNumbers;
import java.math.BigDecimal;
import java.math.BigInteger;
public class J_1_ValueOf {
public static void main(String[] args) {
int angka = 20000;
BigInteger angkaBig = BigInteger.valueOf(angka);
System.out.println(angkaBig);
System.out.printf("Variable angkaBig instanceof BigInteger : %b\n",angkaBig instanceof BigInteger);
BigDecimal angkaDecimalBig = BigDecimal.valueOf(240654698480.4848);
System.out.println(angkaDecimalBig);
System.out.printf("Variable angkaBig instanceof BigInteger : %b",angkaDecimalBig instanceof BigDecimal);
}
}
Untuk angka yang sagat panjang, kita akan menggunakan constructor dengan parameter String yang berisis angka panjang tersebut:
Code
package Ch3.J_3_9_BigNumbers;
import java.math.BigDecimal;
public class J_1_BigNumbers_From_Strings {
public static void main(String[] args) {
double angka = 241491919819196116351616116964163.164896819841984198198498735498419819849874987;
String angkaString = "241491919819196116351616116964163.164896819841984198198498735498419819849874987";
BigDecimal bd = BigDecimal.valueOf(angka);
System.out.print("BigDecimal dari `valueOf` : ");
System.out.println(bd);
BigDecimal bdFromString = new BigDecimal(angkaString);
System.out.print("BigDecimal dari `constructor` : ");
System.out.println(bdFromString);
}
}
Namun, sayangnya, kita tidak dapat menggunakan operator yang biasa kita pakai saat melakukan operasi matematika seperti +
, -
, dan serupanya. Namun, kita harus menggunakan method yang disediakan untuk instance class tersebut seperti add
, multiply
dan semisalnya.
Code
package Ch3.J_3_9_BigNumbers;
import java.math.BigInteger;
public class J_1_math_operator {
public static void main(String[] args) {
int angka = 27;
BigInteger bi = BigInteger.valueOf(angka);
// bi + 2 will trigger error at compile time
BigInteger angka2 = new BigInteger("3");
System.out.println(bi.add(angka2));
System.out.println(bi.subtract(angka2));
System.out.println(bi.multiply(angka2));
System.out.println(bi.divide(angka2));
System.out.println(bi.mod(angka2));
}
}