5.00 / 1 oy

Java'da tamsayıyı tamsayıya bölünce küsüratın kaybolması

Java örneklerimize devam ediyoruz. Bugün sıklıkla yapılan bir hataya ve nasıl düzeltilebileceğine değinerek başlamak istedim. Bir tamsayı başka bir tamsayıya bölündüğünde küsüratı kaybolur, üstelik double bir değişkene atansa bile. Örnek üzerinden anlamak için şöyle bir kod yazalım:

Örnek 1: Çıktı alırken içeride ek değişken kullanmadan bölümü yapalım.

int a=3;
int b=2;
System.out.println(a/b);

Çıktı: 1

Örnek 2: Bölümü bir tamsayı c değişkenine tanımlayalım

int a=3;
int b=2;
int c=a/b;
System.out.println(c);

Çıktı: 1

Örnek 3: Bölümü double veri türünde bir c değişkenine tanımlayalım.

int a=3;
int b=2;
double c=a/b;
System.out.println(c);

Çıktı: 1.0

Örnek 4: Değişken kullanmadan direk olarak bölüm yapalım

System.out.println(3/2);

Çıktı: 1

Demek ki bir tamsayıyı başka bir tamsayıya bölünce ne yaparsak yapalım küsüratını kurtaramıyormuşuz. Peki nerede yanlış yapıyoruz ya da bu bölüm işlemini nasıl yapmamız gerekirdi? Cevap şu:

Bölüm işlemlerinde hem pay hem de payda int veri türünde olmamalıdır. En az birisi (pay, payda ya da her ikisi birden) double gibi küsürat tutan bir veri türüne dönüştürülürse (casting) ya da en başından bu şekilde tanımlanırsa bu problemle hiç karşılaşılmamış olur.

Örnek 5: 

int a=3;
int b=2;
System.out.println((double)a/b); //pay yerine payda ya da her ikisi de cast edilebilirdi

Çıktı: 1.5

Örnek 6: 

int a=3;
int b=2;
double c=a/(double)b;
System.out.println(c);

Çıktı: 1.5

Örnek 7: 

System.out.println(3/2); // int/int -->1
System.out.println(3.0/2); // double/int -->1.5
System.out.println(3/2.0);// int/double -->1.5
System.out.println(3.0/2.0);// double/double -->1.5

Çıktı: 

1
1.5
1.5
1.5

Son örnekte olduğu gibi değişken olarak tanımlanmamış bölüm işlemlerinde sayının sağ tarafına nokta sıfır (2.0 gibi) eklenerek tamsayı/tamsayı problemi yine aşılabilir.

utku33

06.01.2020 00:33

Bu soru 1 kez yanıtlandı.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Java'da tamsayıyı tamsayıya bölünce küsüratın kaybolması

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.