1
resposta

[FLOAT] - Na verdade, não...

Não sei se o professor vai ou não retratar isso mais para frente no curso... Mas para valores decimais onde preciso de exatidão, como preços de produtos, valores monetários, entre outros, usamos o tipo DECIMAL ao invés de FLOAT. E aí sim eu posso fazer uma consulta filtrando por igualdade (=) o campo do valor. Ao invés de ter a necessidade de utilizar BETWEEN (um comando extenso e não prático para tal).

Do manual do MySQL:

"MySQL suporta todos os tipos numéricos da ANSI/ISO SQL92. Estes tipos incluem o tipos de dados numéricos exatos (NUMERIC, DECIMAL, INTEGER, e SMALLINT), assim como o tipos de dados numéricos aproximados (FLOAT, REAL, e DOUBLE PRECISION). A palavra-chave INT é um sinônimo para INTEGER, e a palavra-chave DEC é um sinônimo para DECIMAL.

Os tipos NUMERIC e DECIMAL são implementados como o mesmo tipo pelo MySQL, como permitido pelo padrão SQL92. Eles são usados por valores para os quais é importante preservar a exatidão como, por exemplo, dados monetários. Quando é declarado um campo de algum desses tipos a precisão e a escala podem ser (e normalmente é) especificadas; por exemplo: salario DECIMAL(5,2)"

No caso do tipo FLOAT a mesma parte do manual diz:

"O tipo FLOAT é usado para representar tipos de dados numéricos aproximados. O padrão SQL-92 permite uma especificação opcional da precisão (mas não da faixa do expoente) em bits, após a a palavra FLOAT e entre parenteses. A implementação MySQL também suporta esta especificação opcional de precisão. Quando FLOAT é usada para uma tipo de coluna sem especificação de precisão, MySQL utiliza quatro bytes para armazenar os valores. Uma sintaxe variante também é suportada, com dois numeros entre parenteses após a palavra FLOAT. Com esta opção, o primeiro número continua a representar a quantidade de bytes necessária para armazenar o valor, e o segundo número especifica o número de dígitos a serem armazenados e mostrados após o ponto decimal (como com DECIMAL e NUMERIC). Quando é pedido ao MySQL para armazenar um número em uma coluna com mais dígitos decimais após o ponto decimal que o especificado para esta coluna, o valor é arredondado eliminando os digitos extras quando armazenado."

1 resposta

Olá João, tudo bem?

Obrigada por compartilhar essa informação conosco!

De fato, para valores decimais onde a exatidão é importante, como preços de produtos e valores monetários, o tipo DECIMAL é mais indicado do que o tipo FLOAT.

O tipo DECIMAL é um tipo numérico exato, que permite especificar a precisão e a escala dos valores armazenados. Já o tipo FLOAT é um tipo numérico aproximado, que pode levar a imprecisões em valores decimais, especialmente quando operações matemáticas são realizadas. O tipo FLOAT é adequado para dados científicos ou de engenharia que exigem uma grande variedade de valores, mas não é adequado para dados financeiros ou monetários que exigem precisão exata.

João, continue com essa dedicação aos estudos, que você vai longe!

Caso surja alguma dúvida, fico à disposição.

Abraços e até mais!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software