[pyar] Valores incorrectos

Cristian Segura ska.python en gmail.com
Vie Oct 15 18:48:39 ART 2010


Gracias Diego!

Ya lo pude resolver. Lo hice de esta forma:

b = (100, 50, 20, 10, 5, 2, 1, 0.5, 0.25, 0.1, 0.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]
        v = (v * 10 - b[i] * 10) / 10
        j += 1
    if j != 0:
        print j, " billetes/monedas de ", b[i]
    j = 0
    i += 1
if v != 0:
    print "Con %.2f centavos imposibles de devolver" % v

Un saludo y gracias ;)



2010/10/15 Diego E. Ahumada <eddie.cpp en gmail.com>

>
> 2010/10/15 Cristian Segura <ska.python en gmail.com>
>
> Buenas chicos, mi primer duda a la lista :P
>>
>> Estaba resolviendo un ejercicio, y me surgió un problema. El ejercicio en
>> cuestión es el siguiente:
>>
>> "Dada una cantidad de dinero, indicar como repartir el vuelto de manera
>> que se utilice la menor cantidad de monedas"
>>
>> El código que tengo es el siguiente:
>>
>> 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 utilizando como valor 1807.35 es:
>>
>> 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
>>
>>  Mi pregunta es, por que al hacer la resta 0.35-0.25 devuelve 0.09 y no
>> 0.1?
>>
>> Un saludo y gracias
>>
>>
>> El problema se debe a cómo python y las computadoras en general manejan
> los números de coma flotante. La respuesta precisa la encontrás en:
> http://docs.python.org/tutorial/floatingpoint.html
>
> Las alternativas son utilizar el módulo 'decimal' (from decimal import *),
> o hacer, por ejemplo, round(3.5-2.5,2).
>
> Diego.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101015/0575e31e/attachment.html>


More information about the pyar mailing list