PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → [WD11] Conversion implicite reel -> entier
[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
;-)