Inicio > Programación > Tip C++: Redondear números reales

Tip C++: Redondear números reales

Lunes, 16 de febrero de 2009 Dejar un comentario Ir a comentarios

cpp logo

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 :P ).

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.

GD Star Rating
loading...
Tip C++: Redondear números reales, 9.1 out of 10 based on 9 ratings
Share
Categories: Programación Tags: ,
  1. Gabriel
    Lunes, 13 de junio de 2011 a las 23:50 | #1
    GD Star Rating
    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.

  1. Lunes, 8 de febrero de 2010 a las 20:38 | #1