Bonjour,
Lorsque je tape (AS3) : trace(30/100+14/100000);
J'obtient ce résultat, tout à fait illogique !
0.30013999999999996
Bizarre, non ? o_O
En AS2, j'obtient un résultat correct ; à savoir 0.30014
Comment remédier à ce problème ?
Aidez moi SVp !
 Un drôle de résultat pour un calcul si simple . . .
 Un drôle de résultat pour un calcul si simple . . .
				
				
						
						
				Bonjour,
Lorsque je tape (AS3) : trace(30/100+14/100000);
J'obtient ce résultat, tout à fait illogique !
0.30013999999999996
Bizarre, non ? o_O
En AS2, j'obtient un résultat correct ; à savoir 0.30014
Comment remédier à ce problème ?
Aidez moi SVp !
 
 
				
				
						
						
				Je dirais juste qu'en AS3 c'est plus précis
Pour les arrondis, regarde du côté de Math.floor et Math.round...
 
 
				
				
						
						
				salut à tous,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Je dirais juste qu'en AS3 c'est plus précisah mais non pas du tout, le résultat exact c'est 0.3014.
As tu essayé :
trace((30/100) + (14/100000));
 
 
				
				
						
						
				Il manque un zero, mais tu as raison, autant pour moiah mais non pas du tout, le résultat exact c'est 0.3014.

 
 
				
				
						
						
				Il faut savoir qu'un ordinateur ne dispose que d'un nombre fini de bits pour représenter un nombre. En l'occurrence les nombres flottants en AS3 sont représentés sur 4 octets ou 32 bits. Cela signifie que les nombres sont en précision finie. Et que donc sur certains nombres, on a des erreurs d'approximation, en particulier, c'est le cas ici, un débordement inférieur.
Pour plus d'infos sur ce phénomène déroutant et parfois ennuyeux, regarde ce que tu trouves sur la norme IEEE 754 qui formalise la représentation des nombres en informatique. Par exemple ici:
http://fr.wikipedia.org/wiki/IEEE_754
Partager