Como verificar se o numero digitado é multiplo de 0.05?

1 resposta
ee2d

Então, eu preciso verificar se o usuario digitou um numero multiplo de 0.05, exemplo
3,25
3,30
4,25
4,30

tentei o seguinte código:

// Verificarei se o usuario está digitando um valor multiplo de 0.05

while(valorDevido % 0.05 != 0)

{

System.out.println(Ops, por favor, digite um valor que deve pagar q seja multiplo de 0.05:);

valorDevido = leitor.nextFloat();

}

mas se eu digito por exemplo 3,30 ele continua mostrando a mensagem

1 Resposta

Dahan_Schuster

Você está tendo um problema matemático.
Divisões por números entre 1 e 0 são o mesmo que multiplicações. Por exemplo, dividir 10 por 0.5 é o mesmo que multiplicar por 2:
10.0 / 0.5 = 20.0
10.0 * 2.0 = 20.0

Então, quando o operador % funciona de maneira anormal para divisões entre 0 e 1, que é o caso de 0.05.
A solução que imagino que pode resolver seu problema é multiplicar o número por 100 e realizar a divisão por 5 ao invés de 0.05.
Assim, o que antes seria: 3.30 % 0.05
Ficaria: (3.30 * 100) % 5

Se precisar de um algoritmo mais complexo e inteligente, pode fazer uma função que verifique quantas casas decimais o número possui e multiplique por 10, 100, 1000 etc de acordo com o necessário, mas não acho tão necessário, visto que multiplicar por 100 já dá conta do escopo que tu mandou na pergunta.

Espero ter ajudado!

Criado 10 de março de 2019
Ultima resposta 10 de mar. de 2019
Respostas 1
Participantes 2