SORU
23 Mayıs 2011, PAZARTESİ


Neden modüllü bölümü (`%`) tek tamsayılar ile çalışır?

Geçenlerde kolayca çözülebilir an issue içine modül bölümü kullanarak koştu, ama giriş bir şamandıra oldu:

Tekrar eden bir işlev verilmesi (örn: sin) ve bilgisayar bir işlev tek mesafe zaman hesaplayabilir bu dizi bir bölümde (ör: -pi pi için), herhangi bir giriş işleyebilir bir işlevi yapmak.

"Çözüm gibi bir şey . bariz

#include <cmath>
float sin(float x){
    return limited_sin((x   M_PI) % (2 *M_PI) - M_PI);
}

Bu neden işe yaramıyor? Bu hata alıyorum:

error: invalid operands of types double and double to binary operator %

İlginçtir, Python ile çalışır:

def sin(x):
    return limited_sin((x   math.pi) % (2 * math.pi) - math.pi)

CEVAP
23 Mayıs 2011, PAZARTESİ


"Kalan" tek tamsayı bölme. için geçerlidir normal matematiksel kavram çünkü tamsayı bölüm oluşturmak için gerekli olduğunu, yani bölünme.

"Gerçek sayılar "yazınca işlem." melez yeni bir tür tanıtmak zorunda "kalan kavramını genişletmek için ^em>tamsayıiçin bölümgerçekişlenen. Temel C dili bu işlemi desteklemiyor, ama standart bir kütüphane fmod fonksiyonu olarak c99'da remainder fonksiyonu olarak verilir. (Bu işlevler aynı olmadığını unutmayın ve bazı özellikleri var. Özellikle, tamsayı bölme, yuvarlama kuralları takip etmez.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amena

    Amena

    15 Kasım 2006
  • ItZWaffleS420

    ItZWaffleS42

    9 EYLÜL 2011
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008