Float - Double

1. Float - Double

Charles
elbrabo

(usa Slackware)

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.


  


2. DEFINE X FLOAT

Leandro Totino Pereira
tatototino

(usa Slackware)

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

Diego da Silva de Medeiros
diegotosco

(usa Slackware)

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts