voici présisemment mon probleme que je n'arrive pas à remédier. J'ai c message ( voir le sujet) alors que normalement, les nombres manier sont dans la norme.
voici présisemment mon probleme que je n'arrive pas à remédier. J'ai c message ( voir le sujet) alors que normalement, les nombres manier sont dans la norme.
Bonjour !
Sans un morceau de code, il sera difficile de trouver la cause de cette erreur. Est-ce que tu effectues des opérations sur des variables de plusieurs types (par exemple, des Real avec des LongInt) ?
Regarde l'aide...
Remplace tes variables réelles par des extended et n'oublie pas d'émuler le coprocesseur arithmétique ( directive de compilation {$N+} )...
![]()
a+
PS :désolé ça m'a échappé....
mais ça aussi g essayé, mais le problème persiste...
oups decidemment
ha oui, pour la formule. En gros c'est ça.
repeat
x:=x*r*(1-x);
avec chaque variable qui sont de type extended.
[/code]
Donne le reste du code ( autour de la formule ), et la façon dont tu l'appelles si c'est une procédure ou une fonction...
Et utilise la balise "code"....
a+
Obtenir ce genre d'erreur avec des variables de types extended est assez difficile car elles peuvent stocker des nombres très importants...
Quel est le genre de nombres que tu y stockes ?
Si ce sont des nombres pas très "grands", il vaut mieux utiliser les types simple et double ( un peu plus "compatibles" )...
L'erreur semble venir du fait que si l'on multiplie des valeurs extended qui sont déjà très grandes ( ou très petites, avec beaucoup de décimales ) et que l'on stocke le résultat dans un extended, il y a de très fortes chances pour que le nombre obtenu dépasse...
a+
Le type Extended stocke des nomrbes très grands, mais si on lui offre un petit infini, Turbo Pascal tire la langue...
Vérifie donc pednant que tu y es que tu n'as pas de division par zéro à quelque part. Quand je dis division par zéro, ce n'est pas forcément "zéro". Ca peut très bien être un nombre extrèmement petit.
Ta formule est : x := x * r * (1 - x);
Vérifie donc que x, ou bien 1 - x ne soit pas trop grand. Et essaie aussi par la même occasion de couper tes calculs en morceaux plus petits : ça peut aider.
Un truc du genre :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4x := x * r; z := 1 - x; x := x * z;
ok merci beaucoup, je crois que c'est ça : x était trop grand
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager