Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Negatif modül alma

Konu, 'Java / JSP / JSF' kısmında printf tarafından paylaşıldı.

  1. printf

    printf Daimi Üye

    Kayıt:
    9 Ağustos 2008
    Mesajlar:
    2,095
    Beğenilen Mesajlar:
    0
    Meslek:
    Mühendis Adayı , okuyor
    Şehir:
    Ankara||Istanbul
    Java ile negatif modül alma nasıl yapabilirim?
    Python (-3 % 7) ifadesine 4 değerini döndürüyor, Java'da da böyle birşey gerekli bana.
     
  2. Furkan Onka Uğur

    Furkan Onka Uğur Moderatör Yetkili Kişi

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    3,716
    Beğenilen Mesajlar:
    48
    Şehir:
    Ankara
    ( a % b ) = c ise :
    c = a + b;
    c = a + b + b;
    c = a + b + b + b + ..; olabilir. Sanırım tam olarak anlamadım. Fakat a'yı c > b olana kadar b ile toplayıp yeni a % b 'yi hesaplatırsanız olabilir.
     
  3. warekurt

    warekurt Daimi Üye

    Kayıt:
    21 Şubat 2010
    Mesajlar:
    2,759
    Beğenilen Mesajlar:
    0
    Şehir:
    Çikolata,Kek :D
    Veya (a % b)da a sıfırdan küçük ise, anın mutlak değerinin modunu, b den çıkarmak olabilir. Yani mesela;

    if(a<0){
    return b-(Math.abs(a)%b);
    } else {
    return a%b;
    }

    Ama tabi burada minimum - değer biliniyor ise doğrudan toplama işlemi daha mantıklı olur. Mesela açılar varsa, en az -360 olacaksa;

    (a+360)%360 dersiniz yeterli olur. Önemli olan b'ye tam bölünebilen ve minimum - değeri pozitif değer yapacak bir sayı eklemek.
     
  4. printf

    printf Daimi Üye

    Kayıt:
    9 Ağustos 2008
    Mesajlar:
    2,095
    Beğenilen Mesajlar:
    0
    Meslek:
    Mühendis Adayı , okuyor
    Şehir:
    Ankara||Istanbul
    Bilgisayar mühendisliği okuyan bir arkadaşa sordum,
    sayı pozitif olana kadar mod kaç ise sayıyı mod ile topla dedi.
    bende şöyle bir fonksiyon yazdım, güzel çalışıyor.
    Kod:
    int superMod(int number, int mod){
      if(number >= 0){
        return number % mod;
      }
      else{
        while(number < 0){
          number += mod;
        }
        return number;
      }
    }