Como não ter o arredondamento de um float

3 respostas
python
Filtare

Galera, utilizo o Python na IDE Pycharm e em um programa bem simples notei que estava arredondando a resposta, exemplo, 3.658 ficava 3.66 se eu limitasse o numero de casas decimais para duas, o problema é que se falando de dinheiro isso não pode acontecer, não existe “mitavos” e sim centavos, vou colocar o código bem simples de conversão de reais para dólar, assim se alguém puder me dar alguma ajuda. (A ideia do código é um exemplo apenas)

r = float(input('Quantos reais você tem na carteira? '))
    d = float(r/3.27)
    print('Com R${:.2f} você pode comprar US${:.2f}'.format(r, d))

3 Respostas

javaflex

Se quer truncar em x casas, aqui tem um exemplo:

https://kodify.net/python/math/truncate-decimals

A

Há dois problemas no que está tentando resolver:

  • Precisão de números decimais
  • Lidar com dinheiro e conversão de moeda

Para o primeiro, você pode usar o tipo Decimal ao invés de float

r = Decimal(input('Quantos reais você tem na carteira? '))
 d = Decimal(r/ Decimal('3.27'))
 print('Com R${:.2f} você pode comprar US${:.2f}'.format(r, d))

O segundo problema é ainda mais complicado, e você pode procurar algum pacote que já faz isso ou implementar você mesmo.
Como você disse, o mínimo valor possível em reais é 1 centavo… em dólar é 1 cent… como você converte 1 centavo para dólar?
Não dá, só a partir de 4 centavos você consegue seu primeiro cent, e isso com uma perda de 0.73 centavos (que não existe como dinheiro!)

Filtare

biblioteca math ajudou bastante

Criado 19 de setembro de 2020
Ultima resposta 21 de set. de 2020
Respostas 3
Participantes 3