Visualizzazione dei risultati da 1 a 4 su 4

Discussione: problema somma

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171

    problema somma

    ho due campi:
    <input type=text name="a" onKeyUp="somma()" >
    <input type=text name="b" onKeyUp="somma()" >

    <input type=text name="differenza">

    il problema è che i numeri contentgono decimali.
    a=12,10
    b=10,00
    differenza dovrebbe essere 2,10
    ma non va. (problema della virgola?)
    se utilizzo il punto scrive 2.10000000




    <script>
    function somma() {
    a_1=eval(document.all.a.value);
    b_1=eval(document.all.b.value);
    c=a_1-b_1;
    document.all.differenza.value=c;
    return false;
    }
    </script>

  2. #2
    Ciao... non sono stato proprio ad analizzare il tuo codice, ma questo è un esempio che funziona
    Codice PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <title></title>
    <meta name="GENERATOR" content="Quanta Plus" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript">
    function somma() {
     var a=parseFloat(document.getElementById("a").value.replace(",","."));
     var b=parseFloat(document.getElementById("b").value.replace(",","."));
     c=a-b;
     document.getElementById("differenza").value=c;
     return false;
    }
    </script>
    </head>
    <body>
    <input type="text" name="a" id="a" onKeyUp="somma()" >
    <input type="text" name="b" id="b" onKeyUp="somma()" >
                
    <input type="text" name="differenza" id="differenza">

    </body>
    </html>
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    scusa, ho provato cosi:
    a= 12,11
    b= 10,12
    ma il risultato che mi scrive è:
    1.9900000000000002

    <script type="text/javascript">
    function somma() {
    var a=parseFloat(document.getElementById("a").value.re place(",","."));
    var b=parseFloat(document.getElementById("b").value.re place(",","."));

    c=a-b;
    document.getElementById("diffrenza").value=c;
    return false;
    }
    </script>

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938
    Ciao,

    questo è dovuto alla rappresentazione binaria dei numeri float.

    Puoi arrotondare il numero moltiplicandolo per tante volte
    10 quante e' il numero di decimali che desideri (2) e poi dividere
    per la stesso numero.


    codice:
    n = 1000.123456789;
    n = Math.round( n * 100 ) / 100;
    alert(n);
    Risultato 1000.12

    Oppure usate il metodo toFixed dell'oggetto Number

    codice:
    var a = "12.11";
    var b = "10.12";
    var c = a - b;
    alert( parseFloat(c).toFixed(2));
    Risultato 1.99 , toFixed(2) calcola solo 2 decimali come risultato.

    codice:
    var a = "12.11";
    var b = "10.12";
    var c = a - b;
    c = Math.round(c * 100 ) / 100;
    alert(c);


    M.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.