CodeBlanks Logo Icon CodeBlanks

BigInteger ve BigDecimal

Büyük sayılarla hassas hesap yapmayı öğrenirsin.

BigInteger ve BigDecimal nedir?

Çok büyük sayılar ya da yüksek duyarlılık gerektiren hesaplar için Java BigInteger ve BigDecimal sınıflarını sunar. Bu sınıflar java.math paketindedir.

BigInteger sınırsız boyutta tamsayıları tutar; long'un sınırlarını aşan değerler için kullanılır.

BigDecimal ise ondalıklı sayıları yüksek duyarlıkla tutar. Para hesaplarında double yerine BigDecimal kullanılır; çünkü double küsurat kaymasına yol açabilir.

import java.math.BigDecimal;
BigDecimal fiyat = BigDecimal.valueOf(19.99);

Uygulama BigDecimal ile toplama

Bir Main sınıfı ve main metodu yaz. En üste import java.math.BigDecimal; ekle. BigDecimal price değişkenine BigDecimal.valueOf(9.99), BigDecimal shipping değişkenine BigDecimal.valueOf(2.50) ata. println ile price.add(shipping) sonucunu yazdır.

Başlangıç kodu

Main.java
import java.math.BigDecimal;

public class Main {

}

Örnek çözüm

Main.java
import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal price = BigDecimal.valueOf(9.99);
        BigDecimal shipping = BigDecimal.valueOf(2.50);
        System.out.println(price.add(shipping));
    }
}

Beklenen çıktı

12.49

Ne zaman BigDecimal?

Para, faiz, vergi gibi hesaplarda küsurat hassasıyeti kritiktir. double ikili (binary) temsil nedeniyle 0.1 + 0.2'yi 0.30000000000000004 olarak verir; bu da parasal tutarlarda yanlış sonuçlara yol açar.

BigDecimal onluk temsil kullanır; bu yüzden BigDecimal.valueOf(0.1).add(BigDecimal.valueOf(0.2)) tam 0.3 verir.

Bu sınıfın metotları aritmetik operatörler yerine add, subtract, multiply, divide kullanır. Daha yavaştırlar ama doğruluk daha önemlidir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sınıfları eşleştir

Kavram Anlamı
BigInteger Sınırsız tamsayı
BigDecimal Ondalıklı hassas
long 64 bit
double İkili ondalık

2 BigDecimal değerini tamamla

Soru
BigDecimal pi = BigDecimal.valueOf(____);
Cevap
BigDecimal pi = BigDecimal.valueOf(3.14);

Açıklama: BigDecimal.valueOf sayısal değer alır.

3 Para hesabı için hangisi en uygun?

  • double
  • BigDecimal Doğru cevap
  • float
  • int

Açıklama: BigDecimal küsurat kaybını önler.

Başlangıç bölümündeki tüm dersler