CaRMetal-FR

Forum des utilisateurs francophones
login.php?sid=f515aa3596adc2ffc03bf485d70184f5 profile.php?mode=register&sid=f515aa3596adc2ffc03bf485d70184f5 faq.php?sid=f515aa3596adc2ffc03bf485d70184f5 memberlist.php?sid=f515aa3596adc2ffc03bf485d70184f5 search.php?sid=f515aa3596adc2ffc03bf485d70184f5 index.php?sid=f515aa3596adc2ffc03bf485d70184f5

boucles décimales en binaire

 
Poster un nouveau sujet   Répondre au sujet    CaRMetal-FR Index du Forum -> Les CaRScripts
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
alain974



Inscrit le: 13 Juin 2009
Messages: 144
Localisation: Réunion

MessagePosté le: Lun Mar 28, 2011 11:43 am    Sujet du message: boucles décimales en binaire Répondre en citant

Si on veut afficher les réels entre 0 et 1 par pas de 0,1 avec le script suivant:

Code:
for(x=0;x<=1;x=x+0.1){
   Println(x);
}


on a l'affichage suivant:

Code:
0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999


Cela est dû à ce que JavaScript calcule en binaire, et que 0,1 n'est pas un nombre aussi simple en binaire qu'en décimal. Le problème existe aussi dans les tableurs et dans d'autres logiciels d'algorithmique que CaRMetal... Mais JavaScript permet d'y remédier, tout simplement en forçant les valeurs de x à rester exactes à une décimale près:

Code:
for(x=0;x<=1;x=Math.round(10*(x+0.1))/10){
   Println(x);
}


donne bien le résultat escompté. Bien entendu on peut faire autre chose que simplement afficher les valeurs de x...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
alain974



Inscrit le: 13 Juin 2009
Messages: 144
Localisation: Réunion

MessagePosté le: Jeu Sep 29, 2011 6:25 am    Sujet du message: Répondre en citant

Version plus simple:

Code:

for(x=0;x<=1;x=Number((x+0.1).toFixed(1))){
   Println(x);
}


(plus simple parce qu'elle évite de passer par la multiplication puis division par 10, mais elle nécessite de reconvertir en nombre ce qui est devenu une chaîne de caractères; on n'a rien sans rien...)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    CaRMetal-FR Index du Forum -> Les CaRScripts Toutes les heures sont au format GMT
Page 1 sur 1

 
  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin
Traduction par : phpBB-fr.com