error en la función toFixed() de JavaScript
July 10th, 2007 — leitola función toFixed (n) aplica sobre una variable numérica un formato de representación específico sobre los decimales a mostrar, indicándolo a través de su único parametro n
El problema o bug encontrado en todos los navegadores es que a veces redondea para arriba y a veces lo hace para abajo, veamos un ejemplo:
<script type=“text/javascript”>
var a=0.315;
var b=3.315;
alert(a.toFixed(2)+” - “+b.toFixed(2));
</script>
El resultado será 0.32 - 3.31
Obviamente hay algo mal…
Solución
Se debe aplicar el operador Math.round() de la siguiente manera:
<script type=”text/javascript”>
var a=0.315;
var b=3.315;
a = Math.round(a*100)/100;
b = Math.round(b*100)/100;
alert(a+” - “+b);
</script>
Podríamos crear una función toFixed_FixBug(number, n) para reemplazarla:
function toFixed_FixBug(number,n) {
var k = Math.pow(10,n);
return (Math.round(number*k)/k);
}
seguramente hay mil formas de hacerla, yo elegí el primer método q se me vino a la cabeza…
Conclusión: Siempre las cosas están mal hechas…










