Seguinte, para responder essa questão:
Formulei o seguinte código:
import java.util.Scanner;
public class Main
{
public static void main(String [] args)
{
float valor;
Scanner teclado = new Scanner(System.in);
valor = teclado.nextFloat();
System.out.println("NOTAS:");
System.out.printf("%.0f nota(s) de R$ 100,00\n", (valor / 100));
System.out.printf("%.0f nota(s) de R$ 50,00\n", ((valor % 100) / 50));
System.out.printf("%.0f nota(s) de R$ 20,00\n", (((valor % 100) % 50) / 20));
System.out.printf("%.0f nota(s) de R$ 10,00\n", ((((valor % 100) % 50) % 20) / 10));
System.out.printf("%.0f nota(s) de R$ 5,00\n", (((((valor % 100) % 50) % 20) % 10) / 5));
System.out.printf("%.0f nota(s) de R$ 2,00\n", ((((((valor % 100) % 50) % 20) % 10) % 5) / 2));
System.out.println("MOEDAS:");
System.out.printf("%.0f moedas(s) de R$ 1,00\n", ((((((valor % 100) % 50) % 20) % 10) % 5) % 2));
System.out.printf("%.0f moeda(s) de R$ 0,50\n", ((((((((valor % 100) % 50) % 20) % 10) % 5) % 2) % 1) / 0.5));
System.out.printf("%.0f moeda(s) de R$ 0,25\n", ((((((((valor % 100) % 50) % 20) % 10) % 5) % 2) % 0.5) / 0.25));
System.out.printf("%.0f moeda(s) de R$ 0,10\n", (((((((((valor % 100) % 50) % 20) % 10) % 5) % 2) % 0.5) % 0.25) / 0.1));
System.out.printf("%.0f moeda(s) de R$ 0,05\n", ((((((((((valor % 100) % 50) % 20) % 10) % 5) % 2) % 0.5) % 0.25) % 0.1) / 0.05));
System.out.printf("%.0f moeda(s) de R$ 0,01\n", (((((((((((valor % 100) % 50) % 20) % 10) % 5) % 2) % 0.5) % 0.25) % 0.1) % 0.05) / 0.01));
}
}
Acontece que o resultado sai errado por causa da formatação, como por exemplo: ao digitar o valor 576.73 do exercício, o meu programa responde “5,7673 nota(s) de R$ 100,00”, com a formatação fica “6 nota(s) de R$ 100,00” ao invés de mostrar “5 notas”. O mesmo acontece com outros valores do programa.
Como resolver isso?