Estaba resolviendo este ejercicio y me surgió un problema:
Citar
Dada una cantidad de dinero, indicar como repartir el vuelto de manera que se utilice la menor cantidad de monedas.
Acá mi código:
Código
b = (100, 50, 20, 10, 5, 2, 1, .5, .25, .1, .05) v = float(raw_input("Ingrese vuelto: ")) i = 0 j = 0 l = len(b) while i != l: while v - b[i] >= 0: v -= b[i] j += 1 if j != 0: print j, " billetes/monedas de ", b[i] print "El valor restante es: ", v # Esta unicamente para comprobar los resultados j = 0 i += 1
La salida del script utlizando como valor 1807.35 es:
Código:
18 billetes/monedas de 100
El valor restante es: 7.35
1 billetes/monedas de 5
El valor restante es: 2.35
1 billetes/monedas de 2
El valor restante es: 0.35
1 billetes/monedas de 0.25
El valor restante es: 0.0999999999999
1 billetes/monedas de 0.05
El valor restante es: 0.0499999999999
Por qué después de hacer la resta 0.35-0.25 devuelve 0.09 y no 0.1?
Un saludo y gracias