Executando verificação de segurança...
3

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.

Carregando publicação patrocinada...
1
2

Isso é porque TS usa os mesmos tipos do JS, no qual o tipo Number é sempre um número de ponto flutuante (não há a separação entre int e float que tem em outras linguagens).

0
2
2

É extremamente comum a pessoa fazer um teste e achar que porque funcionou está certo. Muitas pessoas brigaram comigo dizendo que está certo porque viram funcionar. Alguns até dizem que se usar double fica tudo bem porque ele pega um exemplo que o float dava errado e no double não dá mais. O float já é perigoso porque ele não mostra o erro de cara na maioria das vzes, o double esconde por mais tempo ainda. Erro bom é oque o compilador te dá ou no máximo o runtime tem dá com toda clareza na primeira execução.

Fiat 147 todo detonado andando pelas ruas

Eu acho que linguagens mais modernas, algumas pelo menos, que assumem uma pegada mais comercial, mais ainda as que usam um tipo numérico universal, deveriam ter um tipo decimal como padrão e quem sabe ter um de otimização de ponto flutuante binário, já ajudaria muito.

Ao contrário da crença popular algumas implmentações de decimal são tão ou mais rápidos que o binário em boa parte das operações.