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

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • DavideoDesign

    DavideoDesig

    24 NİSAN 2006
  • OVERWERK

    OVERWERK

    6 Temmuz 2010