1
resposta

Float não é uma boa opção para preços

No exercício consta a seguinte opção como correta, mas está errada:

Em um modelo físico, podemos utilizar o tipo FLOAT para descrever uma coluna de preço de um produto, visto que esse tipo permite o uso de dados tanto no formato inteiro quanto em decimal.

Alternativa correta! O tipo FLOAT permite o uso de dados tanto no formato inteiro quanto em decimal, sendo muito utilizado tanto para valores quanto para quantidades expressadas com valores decimais.

Ocorre que se um produto custar $9,10 em decimal, ocorre que 0,10 (um décimo) em binário gera dízima periódica: 1/1010 = 0.00011001100110011... o que gerará problemas de arredondamentos

Alguém poderia argumentar que na base 10, 1/3 também é dizima periódica... Ok, só que não temos moedas de 1/3, temos a de 1/4 (25 centavos) e a de 1/10 (dez centavos) só que essa última, na base 2 é dizima periódica, gerando diversos problemas de soma devido aos arredondamentos.

O ideal, no gabarito do exercício, seria considerar essa situação falsa, exatamente por causa da dízima periódica para $0.10

1 resposta

Olá José, tudo bem?

Realmente, embora frequentemente utilizado nesse contexto, o tipo FLOAT pode apresentar problemas de precisão devido à forma como os números decimais são representados em binário

Para armazenar valores monetários, você pode também usar o tipo DECIMAL (ou NUMERIC). Esses tipos permitem especificar a precisão e a escala, garantindo que os cálculos sejam realizados com a precisão necessária para valores monetários. Por exemplo, ao definir um campo como DECIMAL(10, 2), você está especificando que o número pode ter até 10 dígitos no total, com 2 desses dígitos após o ponto decimal.

A atividade será encaminhada para análise.

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por f\avor, marcar como solucionado