Tip C++: Redondear números reales
Después de mucho tiempo sin publicar nada en el blog, voy a poner un post chorra tipo “tip”, y aprovecho para comunicaros que voy a dejar de escribir en inglés los posts ya que me resulta algo pesado y ando corto de tiempo (aunque me guste mucho intentar mejorar en lo que pueda my terrible english
).
Actualmente me encuentro programando algunas aplicaciones relacionadas con el campo de la visión por computador, y es increíble ver la cantidad de problemas a la que te puede llevar una mala conversión de enteros a flotantes o viceversa cuando estás pasando de coordenadas reales a píxeles (para la representación de puntos en pantalla). Hay muchas librerías matemáticas que nos permiten realizar redondeos mediante una simple llamada a función, pero esto también podemos hacerlo fácilmente mediante las funciones que se incluyen en la librería estándar de C++. La función floor de C++ nos devuelve el valor entero más grande que no sea mayor que el valor que le pasamos como argumento. Por lo tanto para obtener el entero redondeado de un número flotante podemos hacer lo siguiente
#include <cmath> ... floor( num + 0.5); ...
De esta forma tenemos que
- Si num=7.2 -> floor(7.7) = 7
- Si num=7.6 -> floor(8.1) = 8
Cuando la velocidad es crucial en nuestras aplicaciones quizás esta sea la mejor forma de hacer los redondeos ya que las funciones que incluyen muchas librerías realizan comprobaciones de tipo que podemos ahorrarnos.
loading...


loading...
Excelente tip, jaja y yo buscando una funcion que me hiciera ese trabajo, no conseguia, sumarle “0.5″, lo mas logico jajajaja, muchas gracias.