Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2007, 13h53   #1
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Par défaut 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 !
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 07h14   #2
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 32
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2007
Messages : 32
Points : 34
Points : 34
Envoyer un message via MSN à rockntrek
Je dirais juste qu'en AS3 c'est plus précis

Pour les arrondis, regarde du côté de Math.floor et Math.round...
rockntrek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 07h36   #3
Membre Expert
 
Avatar de dom_dev
 
Inscription : février 2006
Messages : 2 067
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 2 067
Points : 2 114
Points : 2 114
salut à tous,

Code :
Je dirais juste qu'en AS3 c'est plus précis
ah mais non pas du tout, le résultat exact c'est 0.3014.

As tu essayé :
trace((30/100) + (14/100000));
__________________
Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
MERCI
dom_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 11h05   #4
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 32
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2007
Messages : 32
Points : 34
Points : 34
Envoyer un message via MSN à rockntrek
Citation:
ah mais non pas du tout, le résultat exact c'est 0.3014.
Il manque un zero, mais tu as raison, autant pour moi
rockntrek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 11h46   #5
Membre actif
 
Inscription : avril 2007
Messages : 126
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2007
Messages : 126
Points : 150
Points : 150
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
David Buff est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h03.


 
 
 
 
Partenaires

Hébergement Web