|
| [WD11] Conversion implicite reel -> entier |
| Débuté par e.fort, 08 juin 2009 16:19 - 3 réponses |
| |
| | | |
|
| |
| Posté le 08 juin 2009 - 16:19 |
Bonjour,
Je rencontre un étonnant problème de conversion implicite. Testez le code suivant : aa est un reel = Tang(45) // aa = 1 bb est un entier = aa * 130 // bb = 129
Donc d'après WinDev 1x130 = 129 ... Hum !!! En fait non, c'est l'instruction Tang(45), qui retrourne 1 qui n'est pas juste, en fait elle retourne surement 0,9999999999 mais en debug aa affiche bien 1 . Si on teste le code suivant:
aa est un reel = 1 // aa = 1 bb est un entier = aa * 130 // bb = 130
Il n'y a plus de problèmes...
Les ordinateurs ne savent pas compter... C'est bien connu... |
| |
| |
| | | |
|
| | |
| |
| Posté le 08 juin 2009 - 16:29 |
Vaut mieux se méfier du débogueur  Et sinon le type monétaire est pas mal pour les soucis d'arrondi (si on n'a pas besoin de trop de décimales) !
eric l.
> Emmanuel Fort a écrit :
Bonjour,
Je rencontre un étonnant problème de conversion implicite. Testez le code suivant : aa est un reel = Tang(45) // aa = 1 bb est un entier = aa * 130 // bb = 129
Donc d'après WinDev 1x130 = 129 ... Hum !!! En fait non, c'est l'instruction Tang(45), qui retrourne 1 qui n'est pas juste, en fait elle retourne surement 0,9999999999 mais en debug aa affiche bien 1 . Si on teste le code suivant:
aa est un reel = 1 // aa = 1 bb est un entier = aa * 130 // bb = 130
Il n'y a plus de problèmes...
Les ordinateurs ne savent pas compter... C'est bien connu...
|
| |
| |
| | | |
|
| | |
| |
| Posté le 08 juin 2009 - 16:39 |
Bonjour Emmanuel....
C'est la raison pour laquelle on dit depuis des années (sur ce forum entre autre) qu'il ne faut pas utiliser des réels, format qui ne sait tout simplement pas coder certaines valeurs, et à la place utiliser un format comme le nouveau 'numérique' (et avant ca monétaire)
Cordialement
-- Fabrice Harari Consultant WinDev, WebDev et WinDev Mobile International
Plus d'information sur http://fabriceharari.com/index_FR.html
Emmanuel Fort wrote:
Bonjour,
Je rencontre un étonnant problème de conversion implicite. Testez le code suivant : aa est un reel = Tang(45) // aa = 1 bb est un entier = aa * 130 // bb = 129
Donc d'après WinDev 1x130 = 129 ... Hum !!! En fait non, c'est l'instruction Tang(45), qui retrourne 1 qui n'est pas juste, en fait elle retourne surement 0,9999999999 mais en debug aa affiche bien 1 . Si on teste le code suivant:
aa est un reel = 1 // aa = 1 bb est un entier = aa * 130 // bb = 130
Il n'y a plus de problèmes...
Les ordinateurs ne savent pas compter... C'est bien connu...
|
| |
| |
| | | |
|
| | |
| |
| Posté le 08 juin 2009 - 18:26 |
Emmanuel Fort a écrit :
Bonjour,
Je rencontre un étonnant problème de conversion implicite. Testez le code suivant : aa est un reel = Tang(45) // aa = 1 bb est un entier = aa * 130 // bb = 129
Donc d'après WinDev 1x130 = 129 ... Hum !!! En fait non, c'est l'instruction Tang(45), qui retrourne 1 qui n'est pas juste, en fait elle retourne surement 0,9999999999 mais en debug aa affiche bien 1 . Si on teste le code suivant:
aa est un reel = 1 // aa = 1 bb est un entier = aa * 130 // bb = 130
Il n'y a plus de problèmes...
Les ordinateurs ne savent pas compter... C'est bien connu...
Ce n'est pas spécifique à Windev (ou Wlangage), mais à tous les langages de programmation.
-- suivre ce lien pour répondre: http://cerbermail.com/… Daniel  |
| |
| |
| | | |
|
| | | | |
| | |
|