Visualizzazione dei risultati da 1 a 5 su 5

Discussione: calcolo in java

  1. #1

    calcolo in java

    Ciao, non riesco a capire come mai un'operazione molto semplice tipo
    10 * 0.28 mi da come risultato 2.8000000000000002 e non semplicemente 2.8 :master:
    codice:
    <html>
    
    <script language="JavaScript">
    function calcolo() {
    
    document.form1.T2.value = 0.28 * (document.form1.T1.value/1)
    }
    </script>
    <body>
    <FORM name="form1" METHOD="POST" style="padding: 0">
    
      0.28 X <input type="text" name="T1" onblur="calcolo()" size="6"> =
      <input type="text" name="T2" size="20"></p>
    </form>
    
    </body>
    
    <html>
    Illuminatemi
    Ciauz
    Marco

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao rosmarc,

    è un errore di javascript sui numeri decimali
    potresti risolvere approssimando
    codice:
    function calcolo() {
      var m = parseInt(document.form1.T1.value,10)
      var valore = 0.28 * m
      valore = Math.round((valore * 10000000000))/10000000000
      document.form1.T2.value = valore
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da willybit
    è un errore di javascript sui numeri decimali ...
    Questo non e` "esattevolmente" corretto.

    Non e` un errore di JS, ma del sistema di floating point dei computer (quindi dell'hardware).

    Tutti i calcoli in floating point vengono eseguiti per approssimazioni successive, ed hanno quindi una precisione ben definita (che dipende dall'hardware).

    E` pero` vero che altri linguaggi implementano un arrotondamento automatico, mentre per JS occorre implemetatrlo esplicitamente, ad esempio come suggerito da willy.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Mich_
    Questo non e` "esattevolmente" corretto.

    Non e` un errore di JS, ma del sistema di floating point dei computer (quindi dell'hardware).

    Tutti i calcoli in floating point vengono eseguiti per approssimazioni successive, ed hanno quindi una precisione ben definita (che dipende dall'hardware).

    E` pero` vero che altri linguaggi implementano un arrotondamento automatico, mentre per JS occorre implemetatrlo esplicitamente, ad esempio come suggerito da willy.
    povero javascript mi posso sbagliare, ma credo che le uniche operazione esatte, javascript o meno, siano solo le operazioni tra interi
    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da pietro09
    povero javascript mi posso sbagliare, ma credo che le uniche operazione esatte, javascript o meno, siano solo le operazioni tra interi
    E` corretto. Ripeto l'errore non e` di JS, ma dell'hardware.

    Le operazioni tra interi (fino alla dimensione massima degli interi) sono eseguite dalla CPU direttamente, mentre le operazioni con i float sono fatte da una unita` specifica (si chiama floating point processor, FPP), che non lavora con la aritmetica imparata alle elementari, ma con un processo che assomiglia ad un calcolo con serie di Fourier.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.