Yazılımlar / Diğer Programlar
Bir Hesap Makinesi Neden 6*6Nın Cevabını 37 Verir ?
Bir Hesap Makinesi Neden 6*6Nın Cevabını 37 Verir ?
-
Evet vatandaşlar, c# ile bi hesap makinem var. Verileri ben giriyorum, işlem kısmını ünlü bir şirketin bu iş için ayrılmış küçük bir serverı yapıyor ve sonucu bana döndürüyor. Fakat 6*6 işleminin sonucu 37, 6+6 işleminin sonucu da 13 olarak dönüyor. Kafayı yiyorum az kaldı.. nedendir sizce ?
-
bozuk olduğundan olabilir mi? :D
-
kardş cok garıp bi durum allah yardımcın olsun yorum bile yapamadım :S
-
Bütün işlemlerde 1 fazlasını veriyorsa sonuc = sonuc-1 yap gitsin :D
-
whatanlar bunu yazdı:
-----------------------------Bütün işlemlerde 1 fazlasını veriyorsa sonuc = sonuc-1 yap gitsin :D
-----------------------------
problemi çözer de problemin nedenini açıklamaz :) ayrıca negatif sonuç verecek işlemlerde s=s+1 yapması gerekebilir belki.programlama hakkındaki bilgim turbo c ile sınırlı olduğundan aklıma sadece int float ile ilgili bir problem olabileceği geldi.
-
kodun hesaplama kısmını paylaş bakalım ama sanmıyorum bu şekilde bir şey olabileceğini
-
Düşük ihtimalde olsa ram'lerde sorun olduğu zaman böyle durumlar oluşabiliyor ramleri test et.
-
tüm işlemlerde yanlış sonuç vermiyor sadece dediğim iki işlemde(yani bulabildiklerim bu ikisi)
hesaplama kısmının kodları bende diil şirket serverında. şöyle kullanılıyor ama, mesela toplama işlemi için service.add(sayi1, sayi2) şeklinde.. -
Çok büyük (30 basamaklı sayılarla falan) işlem yapabiliyormu?
eğer yapabiliyorsa bunun için standart matematik fonksiyonları yerine Bigint gibi classlar ile işlem yapılıyordur bunların implementasyonunda yanlış vardır.
Şimdi desen ki çok büyük sayılarda saçmalıyor diyecem ki float / double /int dönüsümünde virgulden sonraki basamaklarda kayip yasanior ama bahsettigin sayılarda bu sorunun yaşanması çok ilginc
-
Programlama hatası vardır... Döngüsel işlem yapıyorsa özellikle burdaki kodları incelemek lazım yani fazladan bir döngü ypıyorsa...
-
evet 30-40 basamaklı sayılarla işlem yapabiliyor.
yuh artık iki yanlış daha buldum 6/6 = 2 çıkıyor, 6-6 = 1 çıkıyor !
işin garibi sadece 6'nın kendisiyle işlemlerde hatalı. örn. 6*3, 6+4 falan doğru çıkıyor.