Ir para conteúdo
Fórum Script Brasil
  • 0

ERRO no tipo (FLOAT)!


black0S

Pergunta

Bom, galera.

Eu editei este tópico inteiro... :P.

Mas tive que fazer isto...Por que, eu coloquei o tópico, mas ninguém respondia...

Não sei porque, mas talves seja de como eu o escrevi...

ESSE tópico É SOBRE O SEGUINTE:

1- Eu tenho um CÓDIGO em C...

O código é este...

#include <stdio.h>
#include <windows.h>

#define Tempo 2000

void create_files()
{
    FILE *file1;
    FILE *file2;
    
    printf ("Criando arquivos...\n\n");
    Sleep (Tempo);
    
    file1 = fopen ("file1.txt", "wb");
    file2 = fopen ("file2.txt", "wb");  
}

int main()
{
    FILE *file1;
    FILE *file2;
    
    file1 = fopen ("file1.txt", "a");
    file2 = fopen ("file2.txt", "a");
    
    int op = 0;
    
    float valor_1;
    float valor_2;
    char moeda_1[20];
    char moeda_2[20];
    
    printf ("Digite: ");
    scanf ("%d", &op);
    
    if (op == 1)
    {
           create_files();
    }
    
    if (op == 2)
    {
           system ("cls");
           printf ("Completo!! ");
           
           fscanf (file1, "%s %f", moeda_1, &valor_1);
           fscanf (file2, "%s %f", moeda_2, &valor_2);
           
           printf ("\n\n");
           printf ("file1: %s %f", moeda_1, valor_1);
           printf ("\n\n");
           printf ("file2: %s %f", moeda_2, valor_2);
           printf ("\n\n");
    }
    
    system ("Pause");
}

2- Vejam a função int main(),

3- Vejam as variaveis float valor_1;

float valor_2;

4- Vejam que as variaveis são do TIPO float.

5- Então...A estas variaveis foram atribuidas 2.00 e a outra 6.50.

Pronto...Este é o ERRO...

6- "Quando eu foi ver o valor das variaveis, esta lá o seguinte:

valor_1 = 2.00000000

valor_2 = 6.50000000

PORQUE??!!??!!??!!

Sendo que era para mostrar assim:

valor_1 = 2.00

valor_2 = 6.50

POR FAVOR GALERA ME AJUDEM!!! :(

Editado por black0S
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

o valor das variaves esta correto, pois

2.0 = 2.0000000

e

6.5 = 6.5000000

portanto, não há um erro no programa...

O que acontece é que, por definicao, o printf vai te dar um numero fixo de casas deciamais, alem do minimo numero possivel de casas não decimais!

por exemplo:

0000001 = 1

mas quando você manda imprimir "1" ele não imprime os zeros que vem antes!

por definicao, se esse 1 ai for de uma variavel int, ele tambem não vai imprimir nenhuma casa decimal!

pra você explicitar quantas casas antes e depois da virgula você quer quando executa um comando printf, você deve fazer o seguinte

printf(" %5d", i); //nesse caso, ele ira imprimir um int com 5 algarismos, se i vale 200, então sera impresso 00200

printf(" %.4f", f); //aqui, ele ira imprimir um float com quantos algarismos forem necessarios antes da virgula, e somente 4 casas decimais
em resumo, funciona assim: printf(" %A.Bf", f); aonde: A- algarismos que você quer que tenha antes da virgula B- algarismos que você quer que tenha depois da virgula na ausencia de A ou B ele mantem como o padrão (que depende do valor inserido e do tipo de variavel) no seu caso, então:
printf("%.2f", f);

deve dar o resultado esperadp!

ok!

Link para o comentário
Compartilhar em outros sites

  • 0

Só pra corrigir um erro que eu disse aqui:

ao se digitar:

printf("%5d", int);
o programa ira escrever o numero "int" ocupando 5 caracteres! (ou mais, caso o numero precise), mas ele não irá preencher com zeros, e sim com espaços! por exemplo, se int= 20, no meu exemplo com %5d, ele irá imprimir " 20", com 3 espacos antes! agora se o numero for um float, por definicao, ele imprimira 6 casas decimais. caso eu digite
printf("%5.1f", float);
com float = 20 ele ira imprimir " 20.0" dois espacos, 20, o ponto, e 0, totalizando 5 caracteres se você colocar
printf("%5f", float);

com float = 20, como por definicao ele imprime 6 casas decimais, só ai já teriamos 7 caracteres (as 6 casa e o ponto), então ele desconsidera o seu "pedido" de expressar o numero em 5 caracteres

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...