[?] Ayuda como redondeo el valor de una variable en c

Iniciado por .:: KsV ::., 26 Diciembre 2015, 06:09 AM

0 Miembros y 1 Visitante están viendo este tema.

.:: KsV ::.

Bueno tengo dos variables del tipo float

x= 1.12349
y=1.1248648

si las compara para ver si son iguales con (if x ==y){

}

Dara resultado falso

lo q qiero es q redonde el valor de las 2 variables a 2 desimales de esta forma al compararla dara verdadero

en vb usaba round()

x=round(1.12349,2)
y=round( 1.1248648,2)

if x=y then
msgbox "="
elae
msgbox "<>"
end if

En C como qdaria

Saludos
No confíes en aquel que una vez te defraudó.... William Shakespeare

0xFer

#1
Creo que no se puede. Pero si puedes comparar variables de tipo float utilizando otro método. fíjate en éste link; http://plagatux.es/2009/07/tip-cc-precision-en-numeros-reales/

Código (cpp) [Seleccionar]
if (fabs (x-b) < error)

Es eso lo que buscas, sólo que tienes que establecer un valor para "error" que mientras más pequeño sea más precisa será la comparación. El fabs es una función para devolver el valor absoluto del parámetro y está en math.h

Este otro link ya es por si quieres saber más: http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

class_OpenGL

Puedes hacer tu propia función 'round':

Código (cpp) [Seleccionar]
#include <math.h>

double Round(double d, int decimals) {
    return (double)((int)(d * pow(10, decimals))) / pow(10, decimals);
}


Estoy casi seguro de que existe una versión más reducida, pero al menos da una idea...

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

Zekkk

Depende de como quieras redondear, si quieres hacer algo como lo que propone class_OpenGL es mucho mas eficiente hacer printf("%.2f", valor) si lo que quieres es redondear al valor mas cercano, al mas alto, o al mas bajo ya hay funciones que hacen eso: roundf, ceilf, floorf respectivamente.

class_OpenGL


Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

.:: KsV ::.

No confíes en aquel que una vez te defraudó.... William Shakespeare