Bug avec les nombres réels en AS3 - Flash/ActionScript - Programmation
Marsh Posté le 16-05-2010 à 21:47:17
Ca fait toujours ça avec les flottants (qq soit le langage), ça peut jouer des tours.
En l'occurence ça te dérange vraiment ce comportement ? Si tu peux faire avec...
Marsh Posté le 17-05-2010 à 07:45:11
Ben j'avais jamais remarqué, alors pourquoi en AS2 ça ne le fait pas ? ça m'avais dérangé car je testais quand n=1 et je ne comprenais pas pourquoi ça ne marchait pas. Maintenant pour contourner ce bug je teste quand n>=1
Marsh Posté le 17-05-2010 à 12:34:01
Ah oui du coup c'est vraiment dérangeant.
Je suis pas spécialiste as3, je trouve zarb que ca fasse péter jusqu'aux comparaisons sacahnt que Number est le seul type pour les nb à virgule.
Marsh Posté le 17-05-2010 à 16:04:01
Je ne développe pas en AS mais par contre je peux te dire que de façon générale, du fait des erreurs d'approximation sur les flottants liées à la façon dont ils sont mis en oeuvre (cf "IEEE 754" si tu veux en savoir plus), quand tu boucles dessus il vaut effectivement beaucoup mieux tester >= ou <= plutôt que l'égalité pure, qui en réalité ne se produira probablement jamais.
Tu peux également utiliser les fonctions d'arrondis de ton langage pour limiter à une décimale.
Pour info dans ton exemple ta variable i ne sert absolument à rien, tu pourrais très bien boucler sur i...
Marsh Posté le 16-05-2010 à 18:14:21
Bonjour,
la boucle suivante fonctionne bien en AS2 :
var n:Number=0;
for(var i=0;i<10;i++) trace(n+=0.1);
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Mais en AS3 j'obtiens ceci :
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999 ==> ça devrait finir par la valeur 1
Comment faire pour que ça fonctionne aussi ?
Merci !
Message édité par watoo watoo le 16-05-2010 à 18:14:43