IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

probleme dans un calcul


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut probleme dans un calcul
    Bonjour a tous,

    Actuellement j'essaye de créé un compteur qui augmente de 0.00000001 toutes les 1 secondes , mais avec le code ci dessous sa ne marche pas , pourtant sa devrais je vois pas ou est le probleme ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <html>
    <head>
    	<script type="text/javascript">
    var i=0.00000001;
    		function augmenter() {
     
    		i = i + 0.00000001;			
    			document.getElementById("timer").innerHTML = i;
     
    		}
    		setInterval("augmenter()", 1000);
    	</script>
    </head>
    <body>
     
    <p id="timer">0.00000001</p>
     
    </body>
    </html>

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    setInterval( augmenter, 1000);.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    J'ai bien effectuer la modification mais le calcul n'est pas juste sa me met : 2e-8 apres 3.0000000000000004e-8 etc...

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Normal ! Il faut imposer une présentation, mais il y aura toujours des problèmes d'arrondis.

    toFixed()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    j'avais déja essayer avec toFixed mais sa ne change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <html>
    <head>
    	<script type="text/javascript">
    var i=0.00000001;
     
    		function augmenter() {
    		i = i + 0.00000001;			
    		i.toFixed(8);
    			document.getElementById("timer").innerHTML = i;
     
    		}
    		setInterval( augmenter, 1000);
    	</script>
    </head>
    <body>
     
    <p id="timer">0.00000001</p>
     
    </body>
    </html>

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    un principe global en informatique (Tout langage)
    Mieux faut travailler avec des entiers lorsque cela est possible plutôt que des floats.

    cela évite les erreurs d'arrondi.

    Soit i=0 entier
    on veut faire i = i + 0.00000001 toute les secondes
    pour travailler avec des entier il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var i, j = 0;
    //toute les secondes faire
    j = j + 1;
    i = j / 100000000;
    ainsi on obtient bien dans i le même résultat mais on évite les arrondis dans les calculs on ne les as que dans le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var i=0;
      function augmenter() {
        i = i + 1;
        document.getElementById("timer").innerHTML = i / 100000000;
      }
      setInterval( augmenter, 1000);
    A+JYT

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    Je viens d'essayer avec le code ci-dessous mais y'a quand même un problème sa me retourne ceci : 1e-8 , 2e-8, 3e-8 ainsi de suite , il doit y avoir un probleme au niveau du format du nombre je pence ,je dis sa je dis rien parce que je n'y connais pas grand chose en javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <html>
    <head>
    	<script type="text/javascript">
    var i, j = 0;
    //toute les secondes faire
    j = j + 1;
    i = j / 100000000; i.toFixed(8);
     
    var i=0;
      function augmenter() {
        i = i + 1;
        document.getElementById("timer").innerHTML = i / 100000000;
      }
    setInterval( augmenter, 1000);
    	</script>
    </head>
    <body>
     
    <p id="timer">0.00000001</p>
     
    </body>
    </html>

  8. #8
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    C'est une salade JS !

    Voici un exemple différent pour continuer votre apprentissage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var i = 0,
        n = Math.pow( 10, 8 ),
        element = document.querySelector( "#timer" ),
        ObjInterval = setInterval( function(){
            element.textContent = ( ++i / n ).toFixed( 8 );
        }, 1000);
     
    // exemple pour arrêt au bout de 51s
    setTimeout( function(){
        clearInterval( ObjInterval );
    }, 51000 );
    Vous pouvez trouver la signification de ces nouveautés dans cette base de documentation (en anglais malheureusement).

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    J'ai reussis a faire fonctionner le script en rajouter 1 toutes les seconde , je poste le script si quelq'un en a besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <html>
    <head>
    	<script type="text/javascript">
    var i = 0,
        n = Math.pow( 10, 8 ),
        element = document.querySelector( "#timer" );
     
    	  function augmenter() {
        document.getElementById("timer").innerHTML = ( ++i / n ).toFixed( 8 );
      }
     
      setTimeout( function(){
        clearInterval( ObjInterval );
    }, 51000 );
     
    setInterval( augmenter, 1000);
    	</script>
    </head>
    <body>
     
    <p id="timer">0.00000000</p>
     
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] probleme dans le calcul
    Par jassem dans le forum MATLAB
    Réponses: 6
    Dernier message: 16/10/2010, 18h10
  2. probleme dans le calcul de clef de banque
    Par fdumont dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2007, 15h58
  3. Probleme dans un calcul avec un nombre negatif
    Par el_quincho dans le forum Access
    Réponses: 4
    Dernier message: 05/06/2006, 14h18
  4. Probleme dans une clause like !
    Par adil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 15/07/2003, 16h47
  5. Probleme dans ma requete
    Par Kuroro dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo