error en la función toFixed() de JavaScript

la 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…

Posted in programacion.
Compártelo

Deja tu comentario

Cerrar
Enviar por Correo