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

  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • NewsyTech

    NewsyTech

    2 AĞUSTOS 2010
  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006