• 29-04-2016, 21:21:32
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Selamlar.
    Tam olarak nasıl açıklayacağımı bilemedim, başlık saçma oldu.
    Elimizde bir sayı var, a=35000 diyelim. Belirli koşullar sağlandıkça bu sayıya ek bonus veriliyor. %1.2 %0.4 gibi küsuratlı sayılar.
    Bunları veritabanında int olarak tutamıyorum nokta işareti konulmadığı için. Çözüm olarak şöyle düşündüm, %1.4 vermek için db'de 14 olarak kayıt edip çıktı alırken 1.4 olarak alırsam sorun kalmaz.
    Gelen sayıyı sondan 1 rakam ayırarak alabiliyorum yani 1 ve 4 tek tek geliyor ama ikisini nasıl 1.4 olarak kullanabilirim ?
    Alternatif yöntem önerebilecek varsa öyle de olur.
  • 29-04-2016, 21:33:40
    #2
    %d,%d gibi bir şey olabilir mi? ( Fazla anlamıyorum ama belki yardımcı olur )
  • 29-04-2016, 22:47:46
    #3
    adme adlı üyeden alıntı: mesajı görüntüle
    Selamlar.
    Tam olarak nasıl açıklayacağımı bilemedim, başlık saçma oldu.
    Elimizde bir sayı var, a=35000 diyelim. Belirli koşullar sağlandıkça bu sayıya ek bonus veriliyor. %1.2 %0.4 gibi küsuratlı sayılar.
    Bunları veritabanında int olarak tutamıyorum nokta işareti konulmadığı için. Çözüm olarak şöyle düşündüm, %1.4 vermek için db'de 14 olarak kayıt edip çıktı alırken 1.4 olarak alırsam sorun kalmaz.
    Gelen sayıyı sondan 1 rakam ayırarak alabiliyorum yani 1 ve 4 tek tek geliyor ama ikisini nasıl 1.4 olarak kullanabilirim ?
    Alternatif yöntem önerebilecek varsa öyle de olur.
    float varken neden int kullanıyorsun abim be float türünde kullanırsan hiç bir sıkıntı olmaz.
  • 29-04-2016, 23:16:20
    #4
    oguzhane adlı üyeden alıntı: mesajı görüntüle
    float varken neden int kullanıyorsun abim be float türünde kullanırsan hiç bir sıkıntı olmaz.
    haklısın kardeşim de biliyorsun bizim işi yaklaşık 250 yerde int olarak belirli float yapamıyorum o yüzden alternatifler geliştirmemiz gerekiyor.
    şuan şöyle bir şey denedim,

    DWORD kusurat = DWORD(35000*sayial[1]/1000);
    DWORD tamsayi = DWORD35000*sayial[0]/100);
    DWORD bonus= tamsayi+kusurat;

    şimdiki problem int olarak gelen sayıyı parçalara ayırıp üstteki gibi sayial içine atmam gerek ardından da sayial[0] [1] gibisinden çekmem gerek. bi türlü gelmedi takılıyor
  • 30-04-2016, 11:35:27
    #5
    Maalesef hocam. int değerde yüzde olarak tutamazsın. double olucak. double("0.0000") noktadan sonraki sıfırlar kaç basamak yürütüleceğini gözterir. Mesela 1.2236 veya 1.223 veya 1.22 gibi. Senin istediğin gibi olursa metin benzeri bir değer alır ki onunla da hesap yapamazsın. Sayı değeri değildir. int yerine double kullanmalısın.
  • 30-04-2016, 17:21:40
    #6
    gokturksaban adlı üyeden alıntı: mesajı görüntüle
    Maalesef hocam. int değerde yüzde olarak tutamazsın. double olucak. double("0.0000") noktadan sonraki sıfırlar kaç basamak yürütüleceğini gözterir. Mesela 1.2236 veya 1.223 veya 1.22 gibi. Senin istediğin gibi olursa metin benzeri bir değer alır ki onunla da hesap yapamazsın. Sayı değeri değildir. int yerine double kullanmalısın.
    İnt kullanmak zorundayım çünkü bu bir oyun ve ana sistemlerinden birisi bu. Değişiklik yaparsam oyunda yüzlerce bug oluşur hocam.
    Yukarıda zaten bir örnek vermiştim ancak herkes ısrarla int kullanma diyor, yukarıdaki örnekte %11.4 için veritabanında 114 olarak kayıt ettiğimi, çekerken çektiğim sayının sondan 1ini ayırıp küsurat, geriye kalanını tam sayı olarak aldığımı söylemiştim.

    Problemim çözüldü, sorunsuz şekilde yaptım bu mantıkla.
    Hesaplamayı nasıl yaptığımı merak eden varsa da, küsuratı 1000, tam sayıyı 100'le çarparak ve sonunda ikisini toplayarak 3 satırda problemi çözdüm.
    İlgilenenlere teşekkürler.