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

    problema cifre dopo la virgola

    ho il seguente script per il calcolo del versato e dela rimanenza sul totale di un contratto!
    function jCalcola(el,param){
    if(el.checked){ //è checkato calcolo
    document.f.Residuo.value = (document.f.TotaleServ.value.replace(/,/, ".") - document.f.TotAcconto1.value.replace(/,/, "."))
    document.f.Rimanenza.value = (document.f.Rimanenza.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Versato.value = (document.f.Residuo.value.replace(/,/, ".") - document.f.Rimanenza.value.replace(/,/, "."))
    }else{
    //non è checkato ricalcolo
    document.f.Versato.value = (document.f.Versato.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Rimanenza.value = (document.f.TotaleServ.value.replace(/,/, ".") - document.f.Versato.value.replace(/,/, "."))
    }
    }
    funziona tutto se il numero da calcolare nel campo degli acconti (che viene richiamato con la funzione
    document.f.elements[param].value.replace(/,/, ".")
    ) è per es. 195,50 se per esempio il numero è 608,4 nel versato mi risulta 608.3999999999996
    come mai?
    e come posso fare per far visualizzare 2 cifre dopo la virgola anche se è 1,00?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Utilizza l'oggetto Number e il suo metodo toFixed

    Number Object


  3. #3
    ho fatto così:
    function jCalcola(el,param){
    var Versato = new Number(13.3714)
    if(el.checked){ //è checkato calcolo
    document.f.Residuo.value = (document.f.TotaleServ.value.replace(/,/, ".") - document.f.TotAcconto1.value.replace(/,/, "."))
    document.f.Rimanenza.value = (document.f.Rimanenza.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Versato.value = (document.f.Residuo.value.replace(/,/, ".") - document.f.Rimanenza.value.replace(/,/, "."))
    }else{
    //non è checkato ricalcolo
    document.f.Versato.value = (document.f.Versato.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Rimanenza.value = (document.f.TotaleServ.value.replace(/,/, ".") - document.f.Versato.value.replace(/,/, "."))
    }
    }
    il campo dove dovrebbe uscire il risultato è:
    <input type="text" size=20 name="Versato" value="<%=RS("versato")%>" maxlength=150>
    ma il toFixed dove si inserisce?

    Grazie

  4. #4
    Grazie all'aiuto di Vindav sto riuscendo ad ottenere ciò che volevo così:
    function jCalcola(el,param){
    if(el.checked){ //è checkato calcolo
    document.f.Residuo.value = (document.f.TotaleServ.value.replace(/,/, ".") - document.f.TotAcconto1.value.replace(/,/, "."))
    document.f.Rimanenza.value = (document.f.Rimanenza.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Rimanenza.value = new Number(document.f.Rimanenza.value).toFixed(2)
    document.f.Versato.value = (document.f.Residuo.value.replace(/,/, ".") - document.f.Rimanenza.value.replace(/,/, "."))
    document.f.Versato.value = new Number(document.f.Versato.value).toFixed(2)
    }else{
    //non è checkato ricalcolo
    document.f.Rimanenza.value = (document.f.Rimanenza.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Rimanenza.value = new Number(document.f.Rimanenza.value).toFixed(2)
    document.f.Versato.value = (document.f.Versato.value.replace(/,/, ".") - document.f.elements[param].value.replace(/,/, "."))
    document.f.Versato.value = new Number(document.f.Versato.value).toFixed(2)
    }
    }
    adesso l'unico problema è il ricalcolo della Rimanenza:

    document.f.Rimanenza.value = (document.f.Rimanenza.value.replace(/,/, ".") + document.f.elements[param].value.replace(/,/, "."))
    mi da come risultato NaN

    dov'è l'errore?

    Grazie

  5. #5
    risolto!

    document.f.Rimanenza.value=Number(document.f.Riman enza.value.replace(/,/, ".")) + Number(document.f.elements[param].value.replace(/,/, "."))
    Grazie

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.