black0S Postado Janeiro 11, 2011 Denunciar Share Postado Janeiro 11, 2011 (editado) 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.00000000valor_2 = 6.50000000PORQUE??!!??!!??!!Sendo que era para mostrar assim:valor_1 = 2.00valor_2 = 6.50POR FAVOR GALERA ME AJUDEM!!! :( Editado Janeiro 11, 2011 por black0S Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe Amadio Postado Janeiro 12, 2011 Denunciar Share Postado Janeiro 12, 2011 o valor das variaves esta correto, pois2.0 = 2.0000000e 6.5 = 6.5000000portanto, 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 = 1mas 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 seguinteprintf(" %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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe Amadio Postado Janeiro 12, 2011 Denunciar Share Postado Janeiro 12, 2011 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 black0S Postado Janeiro 12, 2011 Autor Denunciar Share Postado Janeiro 12, 2011 Cara, VALEU!!!Valeu mesmo!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
black0S
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...
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 black0SLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.