Ir ao conteúdo
  • Cadastre-se

Programa não termina pois um float subtraido por ele mesmo não é 0.


Posts recomendados

o programa tem que dizer ao usuario o a quantidade(não o valor) de moedas que tem que ser dado de troco, mas quando por exemplo coloco 0.15 que era o troco a ser dado, era pra mim receber a resposta 2 pois 0.15 centavos são equivalentes a duas moedas 0.10 e 0.5, mas en ves disso ele cai num loop infinito mostrando uma porrada de numeros, mas como é possivel sempre no final ele vai subtrair a moeda do troco ex 0.01 - 0.01 era para ser simplesmente 0.00 mas parece que o zero nunca chega para terminar o do while cara como isso é possível como um numero float menos ele não é igual a zero.

Capturar.PNG

Link para o comentário
Compartilhar em outros sites

 ̶o̶ ̶W̶H̶I̶L̶E̶ ̶i̶n̶t̶e̶r̶n̶o̶ ̶d̶o̶ ̶D̶O̶ ̶W̶H̶I̶L̶E̶ ̶é̶ ̶u̶m̶ ̶l̶o̶o̶p̶ ̶i̶n̶f̶i̶n̶i̶t̶o̶
̶v̶o̶c̶ê̶ ̶e̶s̶q̶u̶e̶c̶e̶u̶ ̶o̶ ̶b̶l̶o̶c̶o̶ ̶{̶ ̶.̶.̶.̶ ̶}̶ ̶d̶o̶ ̶w̶h̶i̶l̶e̶ ̶i̶n̶t̶e̶r̶n̶o̶]

Link para o comentário
Compartilhar em outros sites

Entendi o que está acontecendo amigo

Isto mesmo nesta operação a subtração não é zero, e sim aproximadamente 0.0000037252903

ou seja sempre sera diferente de 0.00;

você pode por exemplo modificar de != 0.0 para > 0.001

ou converter em inteiros antes da .subtração.

 

Em ambas são soluções possíveis de resolver o problema. 

Surgiu outra solução , pode também converte na condição assim:

while((int)(100 * troco) != 0.0f);

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!