[ Foro de C ]

constante float

08-Aug-2020 00:18
Invitado (alejandra)
1 Respuestas

Hola, estoy dando mis primeros pasos en C y tengo una pregunta:
cuando declaro una constante de tipo float = 166.386, me devuelve "166.386002" en pantalla. Solucioné el problema eligiendo la constante de tipo double, pero leí que una variable de tipo float tiene 6 cifras significativas (igual que 166.386).
No tengo problema en cambiarlo, sólo quería saber por qué (y por qué si hay 6 cifras significativas me aparecen 9).
Paso el mini código:


int main()
{const float moneda=166.386;
    printf("%.6f",moneda);
    return 0;}


Muchas gracias!!


08-Aug-2020 00:50
Nacho Cabanes (+83)

Seis cifras significativas quiere decir que sólo se garantiza que sean precisas las 6 primeras, pero puede haber discrepancias a partir de esas 6 cifras, y eso es lo que ocurre en tu caso.

Ten en cuenta que internamente los datos no se guardan usando el sistema decimal de numeración, sino el binario, como suma de potencias de 2. Por eso, en ocasiones verás números con más cifras de las esperadas (pero sólo las N primeras serán precisas, según el tipo de datos concreto).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)