Pular para o conteúdo

Float - Double

Responder tópico
  • Denunciar
  • Indicar

1. Float - Double

Enviado em 02/08/2006 - 13:40h

Galera ...
Tenho uma duvida qto a esse codigo ...

#include<stdio.h>
#define cent1 0.50
#define cent2 0.49

int main()
{
float valor=cent1; //valor se iguala a cent1
printf("TESTE1\n\nCent1: %1.2f\n\n",cent1); //exibe o valor de cent1
printf("Valor: %1.2f\n\n",valor); //exibe o valor de valor
if(valor==cent1) //se o valor for igual ...
printf("IGUAL"); //imprime IGUAL
else //se não ...
printf("DIFERENTE"); //imprime DIFERENTE
valor=cent2;
printf("\n\n\n\nTESTE2\n\nCent2: %1.2f\n\n",cent2);
printf("Valor: %1.2f\n\n",valor);
if(valor==cent2)
printf("IGUAL");
else
printf("DIFERENTE");
getchar();
}


A saida desse programa é:

TESTE1

Cent1: 0.50

Valor: 0.50

IGUAL



TESTE2

Cent2: 0.49

Valor: 0.49

DIFERENTE


Não entendo o porque do DIFERENTE no segundo teste uma vez q valor
recebe a constante CENT2. Alguem teve esse problema?
Sabem me responder o por que?

Grato.

Obs: O mesmo teste feito com DOUBLE no lugar de FLOAT gerou a saida
IGUAL nos dois testes.

Responder tópico

2. DEFINE X FLOAT

Enviado em 06/08/2006 - 01:12h

Avariavel define não da para ser comparada com float, o resultado pode ser igual mas a variavel é diferente!

Mas. ai vc pergunta, mas eu passei o valor do define para o float!

quando vc faz isso!

float valor=cent1;

vc ta pegando o valor de cent1 e transferindo para float!

por isso dá o erro!

repita esse exemplo colocando as variaveis define como float!

vc pode tb converter a variavel de define para float!

isso fica a teu modo!

espero ter ajudado!

3. Re: Float - Double

Enviado em 06/08/2006 - 23:16h

Tenta trocar os comandos #define por

#define cent2 0.49F

Assim você está indicando que a constante cent2 é um float.

Para outros tipos:
---- tipo ------------ exemplo
---- long int -------- 3500L
---- unsigned int --- 1000U
---- float ------------ 23.2F
---- long double ---- 12.2L

O erro no seu programa aconteceu porque em C constantes com ponto flutuante escritas sem o sufixo F são tratadas como double. Então quando você atribui a constante à uma variável float, informações são perdidas na hora da conversão.

Espero ter ajudado

Falow
-- Diego da Silva de Medeiros

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder