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

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • super1988guy

    super1988guy

    9 Aralık 2007
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005