Archives For matematicas

En el post anterior mostraba una funcion para redondear un numero a un numero especifico de decimales.

Puse esa funcion en una clase (LaoMath), y le agruege una caracteristica mas: si quisiera redondear 65.6565 a dos decimales, uso el metodo round de mi clase LaoMath:

  1. import com.innocuo.utils.LaoMath;
  2. var num:Number = 65.6565;
  3. trace(LaoMath.round(num,2)); //devuelve 65.66

Facil, verdad? ahora, si quiero mostrar el resultado con 4 decimales (en el ejemplo, el resultado deberia tener dos ceros mas al final), el codigo es:

  1. import com.innocuo.utils.LaoMath;
  2. var num:Number = 65.6565;
  3. trace(LaoMath.round(num,2,4)); //devuelve 65.6600

En el ejemplo LaoMath.round es el metodo que utilizo para redondear el numero, num es el numero que quiero redondear, 2 es la posicion decimal a la que quiero redondear, y 4 es el numero minimo de decimales que debo tener. Atencion, que es el numero minimo, asi que en este otro ejemplo, no funcionaria igual:

  1. import com.innocuo.utils.LaoMath;
  2. var num:Number = 65.6565;
  3. trace(LaoMath.round(num,2,1)); //devuelve 65.66

En este caso pido que el numero devuelto tenga como minimo 1 decimal, pero estoy redondeando a dos decimales, asi que ese parametro se ignora.

Ahora, una caracteristica especial de este metodo es que permite no solo redondear a un numero decimal, sino tambien a decenas, centenas, miles, etc. Como? simplemente asignando un numero negativo al segundo parametro (la funcion entendera que estoy redondeando hacia la izquierda). Por ejemplo:

  1. import com.innocuo.utils.LaoMath;
  2. var num:Number = 65.6565;
  3. //redondear por decenas
  4. trace(LaoMath.round(num,-1)); //devuelve 70
  5. //redondear por centenas
  6. trace(LaoMath.round(num,-2)); //devuelve 100
  7. //redondear por centenas, y mostrar el resultado con 3 decimales
  8. trace(LaoMath.round(num,-2,3)); //devuelve 100.000
  9. //OJO, si redondeo 65.6565 a miles, el resultado sera 0
  10. trace(LaoMath.round(num,-3)); //devuelve 0

Espero que estos ejemplos sean de utilidad. La clase es gratuita (si algun dia tengo tiempo, añadire otros metodos de interes).
bajar codigo: laomath.zip
documentacion: link
codigo fuente: link

Finalmente, un poco de actionscript para compartir. 🙂

En Flash, el metodo round de la clase Math nos permite redondear decimales. Pero siempre redondea al numero entero mas proximo. Y si necesitamos redondear a dos, o tres, o cuatro decimales, como hacemos? El siguiente codigo lo muestra:

  1. function round(qnum:Number, qdecimal:Number):Number {
  2.     var decimal:Number = Math.pow(10, Math.round(qdecimal));
  3.     var num:Number = Math.round(qnum*decimal)/decimal;
  4.     return num;
  5. }
  6. var num:Number = round(65.656321, 2);
  7. trace(num); //devuelve 65.66

Esta es una pequeña introduccion al siguiente post, donde añadire un par de detalles.