He estado probando la función de techo y he obtenido algunos resultados extraños. Si realizo la operación ceil en un número decimal multiplicado por cien, obtengo un determinado resultado. Sin embargo, si realizo directamente ceil sobre el resultado de esa multiplicación, obtengo un resultado completamente diferente. Otro giro es que estos resultados diferentes solo ocurren para ciertos números. Cualquier ayuda sería apreciada.Extraños resultados con la función de techo C++
#include <stdio.h>
#include <cmath>
int main()
{
cout << "The ceiling of " << 411 << " is " << ceil(411) << endl;
cout << "The ceiling of 4.11*100 is " << ceil(4.11*100) << endl;
cout << "The ceiling of " << 121 << " is " << ceil(121) << endl;
cout << "The ceiling of 1.21*100 is " << ceil(1.21*100) << endl;;
}
OUTPUT:
The ceiling of 411 is 411
The ceiling of 4.11*100 is 412
The ceiling of 121 is 121
The ceiling of 1.21*100 is 121
Pero lo mismo ocurre incluso si uso el doble. Y esto siempre sucede con algunos números, pero no sucede con otros, eso es lo que realmente me confunde. – sowmya
@sowmya: incluso los dobles son números de coma flotante. el tipo 'float' tiene menos precisión que el tipo' double'. Eso significa que "doble" se almacena con mayor precisión * comparativamente *, pero eso no significa que lo represente "con precisión". De hecho, 'doble' se llama así porque es un número de coma flotante de doble precisión. Vea esto: http://en.wikipedia.org/wiki/Double_precision_floating-point_format – Nawaz
Usted usa 'double' en su código de muestra. No se usan números 'float' allí. –