Divisão de um valor em valores de moedas?

Então pessoal, preciso pegar um valor e distribuir o troco float em moedas de 1 real, 50 centavos, 25 centavos, 10 centavos e 5 centavos, utilizei o seguinte código:

troco = troco * 100;	//Multiplico meu troco por 100
int trocoTemp = (int)troco;

int moedade1 = (trocoTemp / 100);
System.out.println("Notas de RS 1 = " + moedade1);
trocoTemp = trocoTemp - (moedade1 * 100);

int moedade50cnts = (trocoTemp / 50);
System.out.println("Moedas de RS 0,50 = " + moedade50cnts);	
trocoTemp = trocoTemp - (moedade50cnts * 50);

int moedade25cnts = (trocoTemp / 25);
System.out.println("Moedas de RS 0,25 = " + moedade25cnts);		
trocoTemp = trocoTemp - (moedade25cnts * 25);

int moedade10cnts = (trocoTemp / 10);
System.out.println("Moedas de RS 0,10 = " + moedade10cnts);		
trocoTemp = trocoTemp - (moedade10cnts * 10);

int moedade5cnts = (trocoTemp / 5);		
System.out.println("Moedas de RS 0,05 = " + moedade5cnts);	

contudo, ao declarar 17,95 de troco ele me da 17 moedas de 1 real, 1 moeda de 50 cents, 1 moeda de 25 cents, 1 moeda de 10 cents e 1 de 5 cents, mas na vdd seria 2 de 10 centavos e 0 de 5 centavos, não consegui achar meu erro

1 curtida

Tenta definir invés de “int” inteiro troque para float ou double , e veja se funciona .

eu sou novato na área desculpa se caso não funcione.

1 curtida

Fiz o teste com seu código, não modifiquei nada, apenas adicionei esta linha no inicio:

float troco = 17.95f;

E o resultado foi como esperado. 2 moedas de 10 e 0 de 5.

2 curtidas