#003 ActionScript [Q]Tips: Corrección punto flotante

Cuando tenemos que trabajar con números reales (double, float, punto flotante, o como los queramos llamar) y no solamente eso, sino que tenemos que mostrarlos por pantalla, muchas veces nos llevamos sorpresas poco divertidas, como que donde era 2 aparece 1.99, o donde era 2.98 aparece 2.96, etc.

Casos muy normales para esto son el trabajo con números que representan cantidades monetarias… (no existe 1,999 € de cara a un usuario final) o el trabajo con sistemas métricos como podría ser el longitud (metros, centímetros, etc.)

Aquí os dejamos una útil función que permite “reajustar” el problema del punto flotante que os indicamos, y que a nosotros ya nos ha sido útil unas cuantas veces:

/**
* @author marcos
* @since 13/09/2008
*
* Función que corrige el punto flotante en el número decimales indicado.
*
* @param num: numero que se quiere corregiro
* @param decimales: cantidad de decimales para la corrección resultante
*
*/
function correccionErrorPuntoFlotante(num:Number, decimales:Number):Number
{
	   var correccion:Number = Math.pow(10, decimales);
	   return Math.round(correccion* num) / correccion;
}

Por ejemplo con esta función el valor de corrección de 1.99799 a 3 decimales sería: 1.998

Hasta el próximo tip de veranito!

2 comentarios

  1. El que la sigue la consigue…

    En PHP tienes: round, ceil (a la alta), floor (a la baja).

    En actionscript ni idea, así que gracias Marcos ;-)

  2. [Q]boss (Autor)

    En ActionScript también tienes esas tres posibilidades, aqui la gracia es en elegir los decimales que quieres mostrar redondeados con round.

    Ya me avisas cuando tercie un paseo por Xixón!

Deja un comentario