Ciao,
sto usando la funzione toFixed per correggere il noto problema di javascript sui decimali.
Ho notato questa anomalia:
La funzione calcola_sconto riceve come parametro un importo da scontare (nell'esempio, 10) e un array contenenti una serie di sconti da applicare in cascata, come accade su alcune fatture.codice:<script language="javascript"> function calcola_sconto(valore,array_sconti){ valore_da_scontare = valore; for(var i=0;i<array_sconti.length;i++){ importo_da_scontare = (valore_da_scontare * array_sconti[i])/100; importo_da_scontare = importo_da_scontare.toFixed(6); valore_da_scontare = valore_da_scontare - importo_da_scontare; valore_da_scontare = valore_da_scontare.toFixed(6); } // valore_da_scontare = valore_da_scontare.toFixed(2); alert("TOTALE DEFINITIVO :"+valore_da_scontare); } elenco_sconti = new Array(); elenco_sconti.push(0.5); elenco_sconti.push(1.2); elenco_sconti.push(2); elenco_sconti.push(1); da_scontare = 10; calcola_sconto(da_scontare,elenco_sconti); </script>
Durante il ciclo vorrei mantenere una certa precisione decimale (uso toFixed con 6 decimali), per evitare imprecisioni nel calcolo; il risultato finale però lo vorrei arrotondato a 2 decimali.
Se provo ad usare toFixed(2) sulla somma che esce dal ciclo (commentata nell'esempio) mi dà errore, sia con firefox ("is not a function") che con IE.
Sbaglio qualcosa io o è un problema di javascript?

Rispondi quotando