Eu criei um sistema que pega o valor do banco de dados e envia para um sistema de boletos na nuvem que precisa do valor em centavos. Fiz 2000 boletos em 1 dia, levei 1 semana pra ser avisado do erro. Eu até encontrei algumas soluções já mas o que eu não sei e devia saber? Como não cometer esse erro?
#Código que foi pra produção
#boleto["valor_cobrado"] = "72,1"
valor = str(int(float(boleto["valor_cobrado"].replace(',', '.'))*100))
# valor = '7209'
# valor expectativa = '7210'
Solução adotada usar round()
>>>72.1 * 100
7209.999999999999
>>> 72.1 * 10 * 10
7210.0
>>> round(72.1 * 100)
7210