Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [BUG] Sottrazione tra numeri relativi

    Volevo proporvi questo semplice codice:
    codice:
    <html>
    <body onload="variabile=10; variabile2 = 10.1"
    10 -1
    
    10.1-1
    </body>
    </html>
    Eseguendolo appaiono due link.
    Cliccando sul ciascun link viene eseguita ripetutamente una sottrazione, rispettivamente 10-1 e 10,1-1, che al secondo click diventeranno 9-1 e 9.1-1 e così via.
    Per quanto riguarda il primo, nessun problema: i risultati si susseguono regolarmente (9,8,7,6,5,4,3,2,1,-1, ecc).
    Nel secondo link, però dopo un certo numero di click (7 per me), per qualche motivo, al posto del 4.1, compare un misterioso 3.0999999999999996, che naturalmente è assolutamente senza senso, dato che le sottrazioni decrementano sempre il numero di 1.

    Secondo voi a cosa è dovuto questo grave bug e, soprattutto, come posso aggirarlo?
    Grazie in anticipo.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Mi permetto di ricordarti che i valori numerici in javascript sono trattati e rappresentati come valori in virgola mobile... per soddisfare i gusti estetici dei webmaster sono state giustamente introdotte diverse possibilita' per arrotondare o troncare il risultato.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Non è un bug, è la maniera di rappresentare i numeri in virgola mobile che porta a questo noto (floating point precision) tipo di output alle volte.

    Hai una varietà di maniere per "ovviare":
    toFixed() , Math.round(), o più rischioso perchè arrotonda verso l'alto Math.ceil() e l'inverso Math.floor()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.