C ++ (g ++ kullanarak derlenmiş) bir program var. Ben modül işlevi için işlenen olarak iki çift uygulamak çalışıyorum, ancak aşağıdaki hatayı alıyorum:
hata: 'double' ve 'double' türlerinin geçersiz işlenenleri ile ikili 'operatör%'
İşte kod:
int main() {
double x = 6.3;
double y = 2;
double z = x % y;
}
@supercat daha fazla detay harika olurdu. Bence söylediklerinizin doğru olmasına neden olmak için perde arkasında neler olduğu hakkında bir fikrim var, ama söylediklerinizin doğru olmasının nedenlerini görmek iyi olurdu; perde arkasında nasıl çalıştığını görmek ilginç olurdu (sanırım anlıyorum ama çok kolay bir şekilde yanlış olabilir).
—
RastaJedi
Kayan nokta değerleri tam tam sayı katlarını veya ikisinin kuvvet kesirlerini temsil eder. Örneğin, tam sayı 0,1 tam olarak 3602879701896397/36028797018963968'dir (son değer iki güçtür).
—
Supercat
fmod(x,0.1)
x'i "onda biri" sayısal değerine bölmek yerine, o kesin kesri böler ve kalanını alır.
—
Paul R
fmod
beklenmedik davranışlara neden olabileceğini anlamak önemlidir . Örneğin,fmod(1, 0.1);
matematiksel olarak sıfır olmalıdır, ancak aslında neredeyse 0.1 olacaktır. Hatanın derecesi, bölümün büyüklüğü ile artar. Örneğin,fmod(9E14, 0.1);
matematiksel açıdan sadece yanlış olan yaklaşık 0.05'e değerlendirir.