PDA

Ver la Versión Completa : Redondear en Builder c++


alt126
30-12-2004, 11:37:22
Tengo un float, y quiero que se quede en 2 decimales. He visto muchos codigos hechos para delphi, pero todos usan la funcion round, o trunc, pero yo no la tengo en mi builder c++ 3. Alguien puede ayudarme...

Gracias,

Antonio

barman
03-01-2005, 18:05:57
Usa las funciones

modf(x, &y); // parte entera y fraccionaria del numero
y
pow10(x); // elevas la potencia al numero.

Yo lo hago asin, aunque hay muchas mas formas.


/********************************************************
* METODO: redondeoDec() *
* *
* Redondea un n£mero fraccionario. *
*********************************************************/
double redondeoDec(double numero, int dec)
{
double entera, fraccionaria, fraccion;

fraccionaria = modf(numero, &entera);

fraccion = redondeo (fraccionaria * pow10(dec));
return(entera+(fraccion/pow10(dec)));
} /* End redondeo() ***
**************************/

alt126
04-01-2005, 10:09:40
Algo de eso estaba pensando hacer, pero tu codigo me ha ahorrado mucho tiempo de pensar :confused:. 2 cosas que me gustaria comentarte a ver si tu sabes algo. Para redondear uso la funcion Ceil...supongo k no habra ningun problema con ella no?, y lo 2º es pq al usar el float, no funciona eso de quedarte solo con 2 decimales, solo con double?

Gracias,

Antonio

barman
04-01-2005, 11:27:54
el float, no funciona eso de quedarte solo con 2 decimales, solo con double?



Es indiferente, al pasar los valores, puedes hacer un cast, pero no es necesario,

lo unico
fraccionaria = modf(numero, &entera);
fraccionaria = modl(numero, &entera);

Pero insisto que no es necesario.


Lo de Ceil, te puede servir, como dije antes, casi cada programador se ha creado su propia funcion para redondear, yo uso esta que es la misma que usaba antes que existiese builder como tal, y no me he preocupado en cambiarla.