Visualizzazione risultati 1 fino 2 di 2

Discussione: Js sbaglia a contare! !

  1. #1
    L'avatar di pxy
    pxy
    pxy non è connesso Utente
    Data registrazione
    26-12-2008
    Messaggi
    192

    Predefinito Js sbaglia a contare! !

    Salve a tutti! Questa mattina al lavoro sono incappato in qualcosa di inspiegabile! ehehe e vorrei sapere se qualcuno di voi sa di cosa si tratta.

    Codice Js semplicissimo:

    Codice:
    <script>
    function calcola()
    {
    tot = 4.1*30;
    alert(tot);
    }
    </script>
    <input type="button" onclick="calcola()" value="calcola">
    Se faccio 4.1 per un qualsiasi numero (10, 20 eccc) mi da il risultato corretto, mentre se lo moltiplico per 30 o un suo multiplo mi da un numero periodico che non dovrebbe esserci O.o ma perchè?

    Mentre se faccio tipo


    Codice:
    <script>
    function calcola()
    {
    tot = 4.1*30;
    tot = tot+10;
    tot = tot-10;
    
    alert(tot);
    }
    </script>
    <input type="button" onclick="calcola()" value="calcola">
    Ritorna per bene senza numero periodico, O.o Stranissimo!!! !
    :P
    -- The Mentor
    "You may stop this individual, but you can't stop us all... after all, we're all alike"

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,641

    Predefinito

    I calcoli con numeri in virgola mobile sono necessariamente approssimati, inoltre ricorda che benché tu li scriva in base dieci, la loro rappresentazione in memoria è in base due e un numero che è periodico in una base non necessariamente lo è in un altra e viceversa.
    Questo è proprio uno di quei casi, infatti un decimo in base due è periodico: 0,0(0011).
    Ci sono comunque altri errori di approssimazione che possono causare risultati inaspettati, consulta la voce di Wikipedia relativa ai numeri in virgola mobile per maggiori dettagli.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •