Aproveite o mês das
carreiras
na Alura

44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

SQL pirando ao somar Doubles

Alura
Guilherme Silveira
Guilherme Silveira

Compartilhe

Do nada o meu produto que custava R$ 30,40 agora parece que custa R$ 30,399999. Pior ainda, a soma das notas fiscais não bate com a soma dos produtos! Olha meu SQL piradão:


create table Vendas (valor DOUBLE);
insert into Vendas (valor) values (13.20), (59.60), (30.40);
select sum(valor) from Vendas;
\> 103.1999999999

Que doideira é essa? Até eu não erro essa conta!

Mas eu preciso armazenar os números direito e o tipo double é uma aproximação! Aproximou,perdeu precisão.

Banner da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

Usei double pois o Mysql suporta ele, mas diversos bancos tem seu próprio tipo numérico aproximado. Por exemplo o SQL Server tem os tipos real e float, o Oracle tem seu mundo a parte que apresentamos em seu curso.

A solução? Dizer quantas casas desejamos para representar o valor e quantas casas decimais, então vamos usar o tipo DECIMAL. Dica bonus: deixe uma casa decimal de margem para arredondamentos:


create table Vendas (valor DECIMAL(10,3));
insert into Vendas (valor) values (13.20), (59.60), (30.40);
select sum(valor) from Vendas;
\> 103.200

Vai representar ponto flutuante?

Diga a escala e a precisão e siga o padrão SQL com o DECIMAL.

Essa dica é baseada no nosso curso básico de banco de dados relacionais, onde vemos outras situações onde a tipagem é fundamental para criar restrições no dia a dia como o uso de enumerações.

Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura. Com mais de 20 anos de ensino de tecnologia, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science