Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: ziyaretci - 13 Aralık 2012, 00:24:12

Başlık: Yanlış sonuç
Gönderen: ziyaretci - 13 Aralık 2012, 00:24:12
 Merhaba,

Aşağıdaki kod da  99999*99999   u çarpıyorum yanlış sonuç alıyorum neden ? Yalnız bu 5 haneli de 4 tane  9999 ile  9999 çarparsam sonuç doğru bu 5 hanede neden sapıtıyor?



    private void button1_Click(object sender, EventArgs e)
        {
            if (sayi_1.Text == "") { uyari.Text = "Lütfen 1. sayıyı giriniz."; return; }
            if (sayi_2.Text == "") { uyari.Text = "Lütfen 2. sayıyı giriniz."; return; }
           

                int ss_1 = Convert.ToInt32(sayi_1.Text.Trim());
                int ss_2 = Convert.ToInt32(sayi_2.Text.Trim());
                int sonuc;
                sonuc = ss_1 * ss_2;
                cevap.Text = Convert.ToString(sonuc);
                uyari.Text = "";
           
        }
Başlık: Ynt: Yanlış sonuç
Gönderen: justice_for_all - 13 Aralık 2012, 00:31:15
buyuk ihtimal int sinirini geciyosun.unsigned int gibi bisey varmi tanimlamalarda.

Not:yaptigin islem iki bes basamakli 32 bit sinirini geciyor.int tanimlamalarini int64 olarak degistirmelisin.
Başlık: Ynt: Yanlış sonuç
Gönderen: Tagli - 13 Aralık 2012, 00:39:43
justice_for_all'un dediği gibi, taşma var. 99999'un karesi 10 milyar'a yakın bir sayı yapıyor. 32 bitlik bir int değişkeni ise işaret de göz önünde bulundurulduğunda yaklaşık 2.1 milyar civarında bir değer alabilir. 9999'un karesi 100 milyon civarında olduğundan sorun çıkarmıyor.

Sayılar için long türünden değişken kullanmayı dene.
Başlık: Ynt: Yanlış sonuç
Gönderen: ziyaretci - 13 Aralık 2012, 00:42:16
Alıntı yapılan: justice_for_all - 13 Aralık 2012, 00:31:15
buyuk ihtimal int sinirini geciyosun.unsigned int gibi bisey varmi tanimlamalarda.

Not:yaptigin islem iki bes basamakli 32 bit sinirini geciyor.int tanimlamalarini int64 olarak degistirmelisin.

Teşekkür ederim. long olarak kullandım.