4.10 test avec flottant

Archive.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

4.10 test avec flottant

Message par Le Soldat Inconnu »

Un truc pas très normal, j'arrive à avoir 45/100 = 0.5

Code : Tout sélectionner

flottant.f = 0.5
For n = 45 To 55
  If n / 100 = flottant
    Debug n
  EndIf
Next

Debug ""

For n = 45 To 55
  If flottant = n / 100
    Debug n
  EndIf
Next
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Je pense que c'est tout à fait normal, car tu fait des division sur des entiers, donc le résultat est
toujours '0' (du moins quand le diviseur est supérieur au dividende).
Et quand tu fait un test dessus, le test logique se fait aussi sur des entier, donc pour PB 0.5 = 0 comme
d'ailleurs 0.2343 = 0 par exemple, d'où le résultat que tu obtiens..

Si tu écris cela

Code : Tout sélectionner

flottant.f = 0.5
For n = 45 To 55 
  r.f = n
  If r / 100.0 = flottant
    Debug n
  EndIf
Next
le comportement est alors plus logique.. ;)


PS: l'un des points de PB à améliorer peut-etre, au niveau de la compilation, serait
justement d'afficher des Warning comme le font certains langages lors de la compilation lorsque
par exemple certaines expressions concernant des données de types différents, pour éviter
ce genre d'incohérences et surprise quand à certains résultats. D'autant que PB ne permet pas
à ma connaissance le transtypage...
Force et sagesse...
Répondre