Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: demande retour d'un code d'erreur dans une fonction Mer 12 Aoû 2020 - 23:01 | |
| Bonsoir à tous.
Je fais des appels à une fonction qui doit retourner un calcul numérique. Pour ce faire je teste dans celle-ci pour savoir si chaque élément qui entre dans la fonction a une valeur numérique, sinon je sort de la fonction.
Comme result est le résultat d'une opération, je ne peux me servir d'un retour '0' qui peut-être le résultat d'une opération. 10-5-5 = 0, donc pas de possibilité de retour d'erreur. Evidemment je vais prendre une variable DIM pour avoir un contrôle, mais je pense que ce serait plus approprié de pouvoir avoir un retour d'erreur qu'on peut exploiter. Ou je vais retourner une valeur abracadabrante.
Donc ma demande serait d'avoir la possibilité d'avoir un retour d'erreur. | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: demande retour d'un code d'erreur dans une fonction Jeu 13 Aoû 2020 - 0:50 | |
| Le plus simple serait de retourner une valeur qui ne risque pas de se produire normalement. Dans le cas d'une fonction retournant une valeur entière, tu pourrais retourner la plus grande valeur négative possible, soit -2147483648. Et pour détecter l'erreur, tu fais - Code:
-
if ValeurRetournee%<-2147483647 ' traitement d'erreur ici end_if Idem pour une fonction retournant une valeur flottante, tu retournes 0-power(10,308) car l'exposant maximal est de 308. Donc, tu testes: - Code:
-
if ValeurRetournee<0-power(10,307) ' traitement d'erreur ici end_if IMPORTANT !!!!!!!!!!!!!!!! Ne jamais utiliser l'opérateur = dans le test avec ces valeurs extêmes !C'est plus facile avec une fonction retournant une valeur sous forme de chaîne de caractères. Là, tu peux retourner par exemple un caractère unique normalement pas utilisé, cmme ² ou µ par exemple. Et tu testes: - Code:
-
if ValeurRetournee$="²" ' traitement d'erreur ici end_if ou - Code:
-
if ValeurRetournee$="µ" ' traitement d'erreur ici end_if Dans ce cas, et dans ce cas seulement, tu peux utiliser l'opérateur =. | |
|
Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: demande retour d'un code d'erreur dans une fonction Jeu 13 Aoû 2020 - 1:43 | |
| Merci Klaus pour ton intervention. C'est ce que j'ai fait. J'ai peut-être tord, je pense que ce pouvait être une bonne idée. J'ai utilisé: result= 9876543210123.87 Bonne nuit | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: demande retour d'un code d'erreur dans une fonction Jeu 13 Aoû 2020 - 10:21 | |
| Je rappelle mon avertissement: - Citation :
- IMPORTANT !!!!!!!!!!!!!!!!
Ne jamais utiliser l'opérateur = dans le test avec ces valeurs extêmes ! En fait, la précision d'une valeur flottante est de 15 chiffres de mantisse et un exposant de -308 à +308. Dans ton cas, tu as choisi la valeur de 0.987654321012387E13. Donc, pour la mantisse, tu as atteint la limite de précision, et une comparaison par "=" peut donner un résultat aléatoire, en fonction du hardware de ta machine (ou de celles où tu installes ton logiciel !), car le FPP (Floating Point Processor, des différentes marques de circuits intégrés ne sont pas fiables à ce degré. Cela dépend de l'implémentation technique. Pour l'exposant, tu est "grossièrement" au milieu de la fourchette possible: -308...13...+308, pas de problème à ce niveau-là. Cependnt, tu te rends bien compte que des valeurs de cette ordre de grandeur peuvent facilement àe tre le résultat de fonctions sur des valeurs flottantes (racine carré, sinus, ...) et il existe une réelle, quoique faible, probabilité de tomber sur ces valeurs. C'est pour cette raison que dans ma suggestion, j'ai choisi une valeur correspondant à une limite de l'intervalle de valeurs possibles et, surtout, j'ai évité l'opérateur "=" dont le résultat peut être aléatoire sur des valeurs flottantes. Ceci dit, si ça marche sur ta machine, et si tu ne prévois pas de déployer ton logiciel sur d'autres matériels, alors il n'y a pas de problème. | |
|
Oscaribout
Nombre de messages : 471 Date d'inscription : 29/12/2016
| Sujet: Re: demande retour d'un code d'erreur dans une fonction Jeu 13 Aoû 2020 - 13:25 | |
| Merci Klaus pour ces précisions Je m'étais demandé si j'étais dans la fourchette d'un nombre, mais bien d'autres choses à voir, d'autant que je vais réviser mon code qui ne me plait pas. | |
|
Contenu sponsorisé
| Sujet: Re: demande retour d'un code d'erreur dans une fonction | |
| |
|