Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    12

    Sommare numeri decimali

    Ciao a tutti,

    sto utilizzando il seguente script per sommare due campi presenti in un form html:

    codice:
    <script type="text/javascript">
    function startCalc(){
    interval = setInterval("calc()",1);
    }
    function calc(){
    one = document.ciaotk.prezzo1.value;
    two = document.ciaotk.prezzo2.value; 
    document.ciaotk.somma.value = (one * 1) + (two * 1);
    }
    function stopCalc(){
    clearInterval(interval);
    }
    </script>
    il problema è che lo script effettua la somma solo di numeri interi mentre io vorrei fare la somma di numeri decimali; qualcuno può aiutarmi?

    Grazie!
    Ultima modifica di lucavizzi; 10-09-2016 a 18:26 Motivo: Aggiunta tag code

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Dipende da come l'utente scrive i numeri nei campi del form, se usa la virgola decimale invece del punto decimale devi prima convertirli
    codice:
    <script type="text/javascript">
    function startCalc(){
    interval = setInterval("calc()",1);
    }
    function calc(){
    one = parseFloat(document.ciaotk.prezzo1.value.replace(",","\."));
    two = parseFloat(document.ciaotk.prezzo2.value.replace(",","\.")); 
    document.ciaotk.somma.value = (one + two);
    }
    function stopCalc(){
    clearInterval(interval);
    }
    </script>
    
    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
    Se la somma restituisce numeri interi, presumo venga usata la virgola come separatore per i decimali.
    Quando usi l'aritmetica con js, il separatore dei decimali deve *sempre* essere il punto.
    Un'altra cosa: eseguire la somma ogni millesimo di secondo mi sembra eccessivo, ogni secondo esegui mille volte la somma.
    0,2 secondi dovrebbero essere sufficienti ad "ingannare" l'occhio umano riducendo considerevolmente il numero di calcoli ogni secondo.

    codice:
    <script type="text/javascript">
     function startCalc(){
     interval = setInterval("calc()",200);
     }
     function calc(){
     var one = Number(document.ciaotk.prezzo1.value.replace(',','.'));
     var two = Number(document.ciaotk.prezzo2.value.replace(',','.')); 
     document.ciaotk.somma.value =one+two;
     }
     function stopCalc(){
     clearInterval(interval);
     }
    < /script>
    In futuro, quando posti del codice, racchiudilo nei tag [ code ] [ /code ] (senza gli spazi), per renderlo più leggibile e per attenerti al regolamento del forum.

    Luca

  4. #4
    Scusa br1, ci siamo accavallati.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    12
    Grazie mille br1 e lucavizzi!!

    P.s. lucavizzi scusa hai ragione per le prossime me lo ricorderò.

  6. #6
    Quote Originariamente inviata da Marcoplm Visualizza il messaggio
    P.s. lucavizzi scusa hai ragione per le prossime me lo ricorderò.
    Ottimo.

    P.S.:
    Invece di usare setInterval(), potresti usare l'evento "keyup" sui campi prezzo1 e prezzo2, per eseguire la funzione solo quando necessario.

    Luca

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