Page 1 sur 1

4.10 test avec flottant

Publié : dim. 02/mars/2008 12:09
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

Publié : dim. 02/mars/2008 13:12
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...