Skip to content

Instantly share code, notes, and snippets.

@zokis
Last active August 29, 2015 14:23

Revisions

  1. zokis revised this gist Jun 30, 2015. 1 changed file with 14 additions and 10 deletions.
    24 changes: 14 additions & 10 deletions parcelas.py
    Original file line number Diff line number Diff line change
    @@ -20,13 +20,17 @@ def parcelas(valor, n, div=False, primeira=False):
    return parcelas


    for n in xrange(2, 11):
    print n,
    valor = Decimal('1593.00')
    for _ in xrange(0, 9001):
    for div in [True, False]:
    for pr in [True, False]:
    ps = parcelas(valor, n, div, pr)
    if sum(ps) != valor:
    raise Exception('Erro: sum(%s) != %s, %s %s' % (ps, valor, div, pr))
    valor += Decimal('0.03')
    def main():
    for n in xrange(2, 11):
    print n,
    valor = Decimal('1593.00')
    for _ in xrange(0, 9001):
    for div in [True, False]:
    for pr in [True, False]:
    ps = parcelas(valor, n, div, pr)
    if sum(ps) != valor:
    raise Exception('Erro: sum(%s) != %s, %s %s' % (ps, valor, div, pr))
    valor += Decimal('0.03')

    if __name__ == '__main__':
    main()
  2. zokis revised this gist Jun 30, 2015. 1 changed file with 12 additions and 12 deletions.
    24 changes: 12 additions & 12 deletions parcelas.py
    Original file line number Diff line number Diff line change
    @@ -5,12 +5,11 @@
    def parcelas(valor, n, div=False, primeira=False):
    formato = Decimal('0.00')
    valor = Decimal(valor)

    if div:
    parcela = Decimal(floor(valor * 100 / n) / 100).quantize(formato)
    parcela = Decimal(floor(valor * 100 / n) / 100)
    else:
    parcela = Decimal(floor(valor / n)).quantize(formato)

    parcela = Decimal(floor(valor / n))
    parcela = parcela.quantize(formato)
    if parcela * n < valor:
    parcelas = [parcela] * (n - 1)
    parcelas.append((valor - sum(parcelas)).quantize(formato))
    @@ -21,12 +20,13 @@ def parcelas(valor, n, div=False, primeira=False):
    return parcelas


    for n in xrange(2, 26):
    valor = Decimal('15.00')
    for sv in xrange(0, 1101):
    for div in [True, False]:
    ps = parcelas(valor, n, div)
    if sum(ps) != valor:
    raise Exception('Erro: sum(%s) != %s' % (ps, valor))
    valor += Decimal('0.03')
    for n in xrange(2, 11):
    print n,
    valor = Decimal('1593.00')
    for _ in xrange(0, 9001):
    for div in [True, False]:
    for pr in [True, False]:
    ps = parcelas(valor, n, div, pr)
    if sum(ps) != valor:
    raise Exception('Erro: sum(%s) != %s, %s %s' % (ps, valor, div, pr))
    valor += Decimal('0.03')
  3. zokis revised this gist Jun 30, 2015. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion parcelas.py
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@
    from math import floor


    def parcelas(valor, n, div=False):
    def parcelas(valor, n, div=False, primeira=False):
    formato = Decimal('0.00')
    valor = Decimal(valor)

    @@ -14,6 +14,8 @@ def parcelas(valor, n, div=False):
    if parcela * n < valor:
    parcelas = [parcela] * (n - 1)
    parcelas.append((valor - sum(parcelas)).quantize(formato))
    if primeira:
    parcelas[0], parcelas[-1] = parcelas[-1], parcelas[0]
    else:
    parcelas = [parcela] * n
    return parcelas
  4. zokis revised this gist Jun 30, 2015. 1 changed file with 16 additions and 5 deletions.
    21 changes: 16 additions & 5 deletions parcelas.py
    Original file line number Diff line number Diff line change
    @@ -2,18 +2,29 @@
    from math import floor


    def parcelas(valor, n):
    def parcelas(valor, n, div=False):
    formato = Decimal('0.00')
    valor = Decimal(valor)
    parcela = Decimal(floor(valor * 100 / n) / 100).quantize(formato)

    if div:
    parcela = Decimal(floor(valor * 100 / n) / 100).quantize(formato)
    else:
    parcela = Decimal(floor(valor / n)).quantize(formato)

    if parcela * n < valor:
    parcelas = [parcela] * (n - 1)
    parcelas.append((valor - sum(parcelas)).quantize(formato))
    else:
    parcelas = [parcela] * n
    return parcelas

    ps = parcelas(8.01, 4)
    print ps

    print sum(ps)
    for n in xrange(2, 26):
    valor = Decimal('15.00')
    for sv in xrange(0, 1101):
    for div in [True, False]:
    ps = parcelas(valor, n, div)
    if sum(ps) != valor:
    raise Exception('Erro: sum(%s) != %s' % (ps, valor))
    valor += Decimal('0.03')
    print n,
  5. zokis created this gist Jun 30, 2015.
    19 changes: 19 additions & 0 deletions parcelas.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    from decimal import Decimal
    from math import floor


    def parcelas(valor, n):
    formato = Decimal('0.00')
    valor = Decimal(valor)
    parcela = Decimal(floor(valor * 100 / n) / 100).quantize(formato)
    if parcela * n < valor:
    parcelas = [parcela] * (n - 1)
    parcelas.append((valor - sum(parcelas)).quantize(formato))
    else:
    parcelas = [parcela] * n
    return parcelas

    ps = parcelas(8.01, 4)
    print ps

    print sum(ps)