BigInteger ve BigDecimal
- Java kursu
- Başlangıç
- Ders 17/116
- 5 dk
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
import java.math.BigDecimal;
public class Main {
}Örnek çözüm
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
BigDecimal pi = BigDecimal.valueOf(____);
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.