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

    somma valori con virgola

    Salve vengo subito al dunque:
    il codice seguente fa la somma tra il campo digitato ed il totale, fino a qui tutto ok, il problema nasce quando si inseriscono numeri con le virgole in quanto non titene conto delle cifre dopo la virgola.
    come posso fare per far tener conto nell totale la cifra completa.

    <html>
    <head>
    <title>Untitled</title>
    <script language="javascript">
    function calc(frm){
    var valAq=parseFloat(frm.T10.value)+parseFloat(frm.T1. value);
    frm.T10.value=valAq;
    }//end function
    </script>
    </head>
    <body>
    <form name="ndf">
    <input type="text" name="T1" onchange="calc(this.form)">

    <input type="text" name="T2" onchange="calc(this.form)">

    <input type="text" name="T3" onchange="calc(this.form)">

    <input type="text" name="T10" size="14" style="font-family: Arial; font-size: 8 pt; color: #800000; background-color: #00FFFF; border-style: groove">
    </form>
    <script language="JavaScript">document.forms(0).T10.value= parseFloat("0");</script>
    </body>
    </html>

    Ringraziamenti anticipati.
    Un salustro a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Nei linguaggi di programmazione la virgola non fa parte dei numeri, ma viene usato il punto per la separazione delle cifre decimali.

    Se vuoi dare all'utente la possibilita` di inserire la virgola, questa va convertita in punto prima di applicare parseFloat():

    var ft10 = frm.T10.value.replace(/\,/, ".");
    var ft1 = frm.T1.value.replace(/\,/, ".");
    var valAq = parseFloat(ft10) + parseFloat(ft1);
    valAq = String(valAq).replace(/\./, ","); // opzionale
    frm.T10.value=valAq;

    Nota che se c'e` il punto al posto della virgola, la sostituzione non avviene e il calcolo puo` procedere, quindi il conto funziona anche se siinserisce il punto.

    PS. la sostituzione inversa (punto -> virgola) se nonti interessa puoi ometterla.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Grazie mille, permettimi di fare un'ultima domanda:
    Questa funzione va bene anche per gli importi in euro?
    grazie
    Un salustro a tutti

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Per gli importi manca l'arrotondamento:

    var ft10 = frm.T10.value.replace(/\,/, ".");
    var ft1 = frm.T1.value.replace(/\,/, ".");
    var valAq = parseFloat(ft10) + parseFloat(ft1);
    valAQ = Math.round(valAq * 100) / 100;
    valAq = String(valAq);
    var posdot = valAq.indexOf(".");
    if (posdot == -1) valAq += ".00";
    else if (posdot == valAq.length-1) valAq += "00";
    else if (posdot == valAq.length-2) valAq += "0";
    valAq = valAq.replace(/\./, ","); // opzionale
    frm.T10.value=valAq;


    Ciao
    Michele
    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.