Je suis vraiment confus sur ce code.Comment boucler et augmenter de 0.01 à chaque fois?
Voici ce que je veux faire: Commencer avec une valeur "v" de 5, effectuer le reste des fonctions/calculs, augmenter la valeur "v" de 0,01, effectuer les fonctions/calculs, puis augmenter la valeur "v" de 0.01 à nouveau, exécute les fonctions ... faites ceci 500 fois ou jusqu'à ce que la valeur "v" de 10.00 soit atteinte, selon ce qui est le plus facile à coder.
Voici mon code au moment:
//start loop over v
for(iv=5;iv<=500;iv++) {
v=0.01*iv;
//Lots and lots of calculations with v here
}
Voici ce que je reçois: je tenté de mettre iv < = 10 donc il ne 10 boucles que juste pour que je puisse le tester d'abord avant d'en quittant tous nuit. Il n'a fait que 6 boucles, commençant à v = 0,05 et se terminant à 0,1. Donc, le problème est que a) il n'a pas fonctionné pendant 10 boucles, b) il n'a pas commencé à 5.00, il a commencé à 0.05.
Toute aide serait appréciée.
EDIT: De la merde, tant de réponses! J'ai essayé 2 réponses différentes jusqu'à présent, les deux fonctionnent! J'ai regardé cela et changé le code pendant 3 heures, je ne peux pas croire que c'était si facile.
Je pense que vous vous trompez sur l'erreur d'une multiplication étant identique à un plus grand nombre d'ajouts. Avec chaque ajout, l'erreur s'accumule parce que non seulement parce que 0.01 n'est pas exactement représentable, mais aussi parce que les résultats intermédiaires ne sont pas exactement représentables. – janm
@janm: Oui. J'étais coupable de traiter les points flottants comme réels quand j'essayais d'y penser tout à l'heure. Corrigée. – lijie