Outra desvantagem do segundo exemplo é que a partir do momento que vc fez uma divisão, o float
já se "infiltrou" no meio do cálculo. E aí tudo pode acontecer.
Por exemplo, se quiser voltar ao valor original, nem sempre dará certo:
total = 255
total_float = total / 100
# multiplica por 100 para voltar ao total original
print(total_float * 100) # 254.99999999999997
print(total_float * 100 == total) # False (são diferentes) - para outros valores, pode dar True
# curiosamente, se imprimir assim, ele arredonda pra duas casas e fica "certo"
print(total_float) # 2.55
# mas basta imprimir mais casas decimais pra ver que o valor está errado
print(f'{total_float:.20f}') # 2.54999999999999982236
Nesse caso, o módulo decimal
é o mais indicado. Outras vantagens dele é poder configurar a precisão (quantidade de casas decimais), definir modos de arredondamento que são aplicados automaticamente a todos os cálculos, etc.