No funciona redondeo
Publicado por yolanda (3 intervenciones) el 02/04/2009 16:55:35
Buenas,
Estoy utilizando la funcion modf(numero, &entera) para separar un double en parte decimal y entera; el código que tengo es:
double TFormCrearFactura::redondeoDec(double numero, int dec)
{
double entera, fraccionaria;
int aux;
fraccionaria = modf(numero, &entera);
aux= int(fraccionaria * 100);
if (fraccionaria == 50)
{
entera = entera /100;
}
else if (fraccionaria < 0.5)
{
entera = entera /100;
}
else
{
entera = (entera + 1)/100;
}
return(entera);
} // End redondeo()
Si a número le doy el valor de 501.5 fraccionaria me devuelve 0.5 pero aux toma el valor de 49 en lugar de 50; sin embargo si a número le doy el valor 801.5 fraccionaria me devuelve 0.5 y aux toma el valor de 50. ¿Alguien sabe porqué ocurre esto?
Saludos y muchas gracias.
Estoy utilizando la funcion modf(numero, &entera) para separar un double en parte decimal y entera; el código que tengo es:
double TFormCrearFactura::redondeoDec(double numero, int dec)
{
double entera, fraccionaria;
int aux;
fraccionaria = modf(numero, &entera);
aux= int(fraccionaria * 100);
if (fraccionaria == 50)
{
entera = entera /100;
}
else if (fraccionaria < 0.5)
{
entera = entera /100;
}
else
{
entera = (entera + 1)/100;
}
return(entera);
} // End redondeo()
Si a número le doy el valor de 501.5 fraccionaria me devuelve 0.5 pero aux toma el valor de 49 en lugar de 50; sin embargo si a número le doy el valor 801.5 fraccionaria me devuelve 0.5 y aux toma el valor de 50. ¿Alguien sabe porqué ocurre esto?
Saludos y muchas gracias.
Valora esta pregunta


0