1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

BUG em C no linux? (básico)

Discussão em 'Programação' iniciada por jonsmau, 21 de Novembro de 2007. (Respostas: 2; Visualizações: 466)

  1. E escrevo isto:

    ---------------------------------
    int numero;
    float aux;

    numero = 96541;

    aux = numero/10.0;

    printf("%f", aux);

    ---------------------------------


    O output é:
    9654.099609


    ???

    Não devia ser apenas 9654.10000 ??
    O que se passa?
     
  2. Baderous

    Baderous Banido

    Se utilizares o seguinte código já dá:

    Código:
    int main() {
        [B]int[/B] numero=96541;
        [B]double[/B] aux;
        aux =numero/10.0;
        printf("%f",aux);
        getchar();
        return 0;
    }
    A falta de precisão tem a ver com o facto de estares a usar variáveis do tipo float para representares os teus números. Um float ocupa 4 bytes (precisão simples) e um double ocupa 8 bytes (dupla precisão), logo o double permite uma maior precisão. Se usares uma variável do tipo double para guardar o resultado da operação, o resultado vai ser apresentado com maior precisão.

     
    Última edição: 22 de Novembro de 2007

Partilhar esta Página