Un errore lo hai gia` trovato, il secondo devi organizzare la caccia grossa. Ti do lo strumento, poi lascio usarlo come piu` ti piace:Ho anche corretto una parentesi nella riga del round ed aggiunto il value al sub oltre ad un controllo del campo vuoto (che pero` potrebbe non servire).codice:... // calcola valore totale var tot = 0; for(var i=1; i<2; i++) { // al posto di 2 metti l n. max var sub = f.elements["subtot"+i].value; if(sub == "") sub = 0; tot += parseFloat(sub); } alert("il totale e` "+tot); // formatta con due decimali il campo totale stringatot = new String(Math.round(tot*100)/100); stringatot += (stringatot.indexOf(".")<0)?'.00':'00'; stringatot = stringatot.substr(0,stringatot.indexOf(".")+3); alert("il totale e` diventato "+tot); f.totale.value = stringatot; } }