1
Pourquoi ces deux extraits de code donnent-ils deux résultats différents?Multiplier et diviser par deux
double sum = 1.0;
double xSqFour = x * x/4;
for (int i = 48; i > 1; i-=2) {
sum = 1.0 + (xSqFour/((i/2) * (i/2))) * sum;
}
return sum;
et
double sum = 1.0;
double xSqFour = x * x/4;
for (int i = 24; i > 1; i--) {
sum = 1.0 + (xSqFour/(i * i)) * sum;
}
return sum;
Gee, merci! (Je suis headdesking maintenant, car cela aurait dû être évident.) Acceptera dans 5 minutes. – yodie
C'est purement une limite, et n'a rien à voir avec le bit 'i/2', l'OP est décrémenté de 2 dans la première instance; voici un exemple de ce qui se passe: http://ideone.com/uIqDI –
@Mark - Oh, ma première intuition était juste. * soupir * Oups. – Omnifarious