capgaivo Postado Julho 6, 2023 em 11:03 Compartilhar Postado Julho 6, 2023 em 11:03 Perdão se for dúvida boa, mas sou iniciante, idoso no segundo mês de estudos de programação e bancos de dados. tenho um código em C aparentemente muito simples, que deveria mostrar o resultado final em float com duas casas decimais, PORÉM, mostra apenas dois ZERO, por exemplo, deveria apresentar 12,50 e apresenta 12,00 Segue o código e o retorno no console:] #include <stdio.h> #include <cs50.h> int main(){ int qmin, qmax; float emed; printf("Informe quantidade minima: "); scanf("%d", &qmin); printf("Informa quantidade maxima: "); scanf("%d", &qmax); emed = (qmin + qmax)/2; printf("%.2f\n", emed); printf("O estoque medio é %.2f\n", emed); } RETORNO: ~/ $ ./secao02-exercicio03 Informe quantidade minima: 10 Informe quantidade maxima: 15 O estoque medio é 12.00 Alguém poderia me ajudar? grato 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Fernando Mercês Postado Julho 6, 2023 em 19:11 Compartilhar Postado Julho 6, 2023 em 19:11 Oi @capgaivo! Se liga na linha onde você faz a conta: emed = (qmin + qmax) / 2; Nessa linha, o que está à direita do igual é avaliado primeiro. Neste caso, dois tipos int são somados (qmin e qmax). O resultado, que também é um int, é dividido por um outro int de valor 2. Ou seja, você tem um valor int sendo dividido por outro valor int. O resultado é, naturalmente, um valor do tipo int também. Aí como emed é float, o int resultante é promovido para float. No caso, 25 / 2 = 12 (tudo int) e 12 promovido para float é 12.0. Acredito que a forma mais rápida de resolver isso seja dividindo por 2.0f ou (float)2, ao invés de 2. Então você terá uma conta à direita do igual que dividirá um int por um float e o resultado de int / float é float. 😉 Resumindo, em geral: int / int = int float / int = float int / float = float PS.: Você pode se sentir uma inclinação de dividir por 2.0, mas sem o sufixo f, o 2.0 é um literal do tipo double. Então você teria um resultado do tipo double que depois seria convertido pra float. Eu não lembro das implicações disto. Talvez outra pessoa possa ajudar mais, mas eu recomendaria fazer float com float mesmo. 🙂 Abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
capgaivo Postado Julho 6, 2023 em 22:21 Autor Compartilhar Postado Julho 6, 2023 em 22:21 Muito obrigado pela rapidez e exatidão... funcionaram as duas opções... Grato mesmo. Até 1 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.