[C con Clase] Mostrar decimales de una variable en pantalla

Salvador Pozo salvador en conclase.net
Vie Sep 28 19:29:11 CEST 2007


El pasado 2007-09-28 15:10:05, Ismael Ramón escribió:
 
Hola:

Primero, bienvenido al grupo.

No te importe hacer preguntas fáciles (si eso significa fáciles de responder, claro): son las que más nos gustan. :-)

IR> ¿Qué debo hacer para mostrar también los decimales de una variable tipo
IR> float u otra que los incluya?
IR> Mi problema surgió en cuanto desarrollé este apartado del primer ejercicio
IR> de arrays del curso:
IR>     cout << "Valor promedio: ";
IR>     float promedio = suma / ( sizeof(array) / sizeof(array[0]) );
IR>     cout << promedio << endl << endl;

En C++ debes tener en cuenta que el resultado de operaciones con enteros es un número entero. En general, el resultado de evaluar cualquier expresión tendrá la misma precisión que el término de la expresión con mayor precisión.

Esto se explica el el capítulo sobre conversión de tipos:

http://c.conclase.net/curso/index.php?cap=009

Supongo que en tu programa, "suma" será una variable entera.

Por otra parte, el resultado del operador "sizeof" es siempre un entero. Como todos los términos de la expresión son enteros, el resultado es un entero, que sólo al final se promociona a float, cuando se hace la asignación a "promedio". Pero en ese punto, el compilador ya ha hecho el redondeo (eliminado los decimales).

La solución es sencilla, bastará con que cualquier término de la expresión sea float para que todos se promocionen a float antes de evaluar la expresión. Por ejemplo:

   float promedio = (float)suma / ( sizeof(array) / sizeof(array[0]) );

También vale si se declara "suma" como float.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase