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

  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008