. .

TUGAS & LATIHAN:  Bahasa Pemrograman JAVA Netbeans IDE Menemukan Faktorial Angka Besar Menggunakan BigInteger 

Posted by CHRISTIANTO D,WIBOWO | D3MI-2016 STMIK BUMI GORA On Minggu, Desember 11, 2016 No comments

Sudah pernah ditugaskan pada TUGAS & LATIHAN:  Bahasa Pemrograman JAVA Netbeans IDE Mencari Bilangan Faktorial bahwa ketika program faktorial dijalankan dengan input tertentu nilai >= 13, kita mendapatkan hasil yang salah - angka negatif atau hasil yang tidak sesuai dengan faktorial sebenarnya dari jumlah tersebut. Alasannya adalah bahwa faktorial jumlah yang lebih besar dari atau sama dengan 13 terlalu besar untuk jenis int data. Kita dapat menggunakan tipe data lama ( DATA PRIMITIVE ) tapi tetap saja tidak akan cukup besar untuk menampung faktorial angka yang lebih tinggi.
Solusinya adalah dengan menggunakan BigInteger Class yang dapat menangani nomor-nomor besar.
Oleh sebab itu, TUGAS DAN LATIHAN kali ini adalah :
BUATLAH JAVA PROGRAM YANG MAMPU MENANGANI BILANGAN BESAR ATAU >= 13.
Kelas BigInteger digunakan untuk mewakili bilangan-bilangan yang sangat besar. Overflow tidak terjadi seperti halnya dengan int dan long. Sebuah objek BigInteger dibuat dengan melewati sebuah String yang berisi nilai integer. Kita telah membuat sebuah objek BigInteger bernama 'fact' yang akan memegang faktorial jumlah dan dijalankan dengan 1.
BigInteger fact = new BigInteger("1");
Dan Loop yang diberikan berikut adalah identik dengan yang kita gunakan dalam program faktorial normal. Perkalian dua BigIntegers dilakukan dengan menggunakan fungsi multiply function yang membutuhkan BigInteger sebagai argumen. Kelas BigInteger adalah kekal yang berarti bahwa objek yang multiply function itu dipanggil tidak mengubah bilangan bulat itu sendiri. perkalian dilakukan dan BigInteger baru dikembalikan yang perlu disimpan dalam variabel fact - variable fact.
fact = fact.multiply(new BigInteger(i + ""));
Jika pernyataan berikut digunakan sebagai pengganti baris di atas, program selalu mengembalikan satu sebagai jawabannya.
fact.multiply(new BigInteger(i + ""));
Hal ini karena, kami telah menginisialisasikan fact with '1'. dan proses fungsi perkalian tidak akan berpengaruh pada nilai integer yang sudah disimpan dalam fact dan objek dikembalikan oleh multiply(), dan tidak disimpan kembali (return value) oleh fact. Bahkan sampai setelah akhir loop, sebenarnya fact masih memegang nilai '1'. 
Berikut ini Java Program untuk menemukan faktorial menggunakan BigInteger :
//@uthor Christianto "GEMBLONG" Dharma Wibowo
package faktorianbiginteger;
import java.math.BigInteger;
import java.util.Scanner;
public class FaktorianBigInteger {
public static void main(String[] args) {
       System.out.println("MENCARI FAKTORIAL DARI BILANGAN BESAR");
       System.out.println("-------------------------------------");
       Scanner s = new Scanner(System.in);
       System.out.print("Input Bilangan : ");
       int n = s.nextInt();
       String fact = factorial(n);
       System.out.println("Factorial Dari Bilangan Adalah : " + fact);
   }

   public static String factorial(int n) {
       BigInteger fact = new BigInteger("1");
       for (int i = 1; i <= n; i++) {
           fact = fact.multiply(new BigInteger(i + ""));
       }
       return fact.toString();
    }
 
}
Factorial Number With BigInteger
Maka dengan demikian problem faktorial bilangan besar sudah dapat kita pecahkan,
meskipun angka faktorial yang dihasilkan luar biasa besarnya, tetapi paling tidak kita mendapat satu pembelajaran manfaat dari Java Program ini.

0 komentar:

Posting Komentar