blog | sorteios
Softblue - Qualidade em Cursos On-Line  

e-mail:

senha:
cadastrar | recuperar senha | entrar

Home Cursos Kits Como funciona Perguntas Frequentes Quem somos Contato

Blog Softblue

André Milani é formado em Ciência da Computação pela PUC-PR, pós-graduado em Business Intelligence pela mesma instituição e possui diversas certificações na área de TI. É também autor de vários livros na área de informática, entre eles o MySQL - Guia do Programador, PostgreSQL - Guia do Programador e Construindo Aplicações Web com PHP & MySQL, todos pela editora Novatec, os quais podem ser encontrados nas principais livrarias, inclusive no Submarino. Atua desde 2003 anos com desenvolvimento web e treinamentos de profissionais. Também é desenvolvedor de aplicativos para o ambiente iOS da Apple, possuindo aplicações que juntas somam mais de 50.000 downloads na AppStore.

Arredondando no MySQL

Publicado em 20/02/2012 às 23:58:57 horas.

     

Uma dúvida bastante comum entre as pessoas que estão iniciando os seus estudos em bancos de dados e começando a manipular na prática o SQL é a respeito da formatação de números decimais. Esta dúvida está relacionada também, na maioria dos casos, com a utilização dos tipos de dados double e float, mas pode ocorrer também em outras circunstâncias.

Dízima periódica

Algumas contas matemáticas podem gerar dízimas periódicas, como por exemplo a operação de divisão do número 5 pelo número 3:

SELECT 5/3;
# Resultado: 1.6667

Operações de multiplicação também podem gerar números decimais ou resultados como por exemplo: ao multiplicar 1000 por 1.5, o resultado é de 1500, mas em algumas situações o MySQL pode apresentar o número em diferentes versões: 1500.0000, 1500.00001, etc. Isto ocorre pois o servidor de banco de dados em questão, ao realizar estas contas, não leva em consideração quantas casas decimais havia no número original utilizado na operação para formatar o resultado final, sendo necessário, neste caso, formatar o número manualmente, ou adequar a coluna da tabela que receberá este valor para suportar no máximo o número de casas decimais desejado pelo programador.

Para tratar adequadamente a formatação destes valores, é possível utilizar a função ROUND disponível no MySQL. Esta função recebe dois parâmetros: o primeiro deles é o número a ser formatado, e o segundo é o número de casas decimais que o usuário deseja que o valor apresente. Na omissão do segundo parâmetro, o comando arredonda o valor para um inteiro (sem casas decimais).

Alguns exemplos de utilização da função ROUND:

SELECT ROUND(1.6667);
# Resultado: 2
# Arredonda para não utilizar casas decimais

SELECT ROUND(1.6667, 1);
# Resultado: 1.7
# Arredonda para uma casa decimal

SELECT ROUND(1.6667, 2);
# Resultado: 1.67
# Arredonda para duas casas decimais

Observe que ao arredondar um valor, o comando ROUND não apenas exibe o número de casas decimais informado, mas também arredonda a última casa decimal em questão para cima ou para baixo dependendo do valor decimal da próxima casa. Por exemplo:

SELECT ROUND(1.6667, 3);
# Resultado: 1.667
# Casas decimais 3 e 4: 67 está mais próximo de 70 do que de 60

SELECT ROUND(1.6664, 3);
# Resultado: 1.666
# Casas decimais 3 e 4: 64 está mais próximo de 60 do que de 70

Quando usar: na instrução UPDATE ou SELECT?

Quando devemos utilizar o comando ROUND? Podemos utilizá-lo em dois momentos distintos. O primeiro deles seria na instrução UPDATE que irá atualizar seus dados, como por exemplo:

UPDATE TABELA SET CAMPO = ROUND(...);

Desta forma já seria armazenado na tabela em questão o valor resultante da operação devidamente formatado. A outra forma seria não armazenar o valor formatado, e sim formatá-lo no momento que o mesmo fosse capturado pela instrução SELECT:

SELECT ROUND(CAMPO, 2) FROM TABELA;

Não existe uma forma certa ou errada de utilizar este comando, pois isto vai depender das especificações do seu projeto. Se for interessante para o seu sistema armazenar o valor sem o arredondamento (o arredondamento pode influenciar o resultado em operações futuras), o recomendado é armazená-lo sem arredondamento. Caso contrário, você poderá utilizar o comando de formatação logo na instrução UPDATE sem maiores preocupações,

Envie o seu comentário

  Nome: 
  Comentário: 
Digite o código aqui:

Mailing List

Cadastre o seu e-mail para receber notícias e informações sobre novos cursos e novidades dos blogs de nossos instrutores!



* Cadastre-se e participe de sorteios de brindes e livros de informática!

Curso on-line

Curso iOS: Criando Aplicações para iPhone e iPad
de R$ 619,90 por R$ 459,90
(em até 18x)

Conheça nossos outros cursos

Posts anteriores

.: Arredondando no MySQL

.: Softblue Logic IDE

.: Cannot load php5apache2_2.dll

.: Conhecendo o Android

.: Protegendo senhas

.: Apache Commons Lang API

.: Trailer do filme: Java 4-ever!

.: Gerando PDF em Java

.: PHP e arquivos em cache

.: JDK e Eclipse no Linux

.: Instalando o Eclipse

.: Instalando o JDK

.: Zip/Unzip em Java

.: Enviando e-mails no Java

Nossos cursos

Nossos cursos são criados com base na realidade do mercado de trabalho, abordando teoria e prática das tecnologias. Conheça nossos cursos clicando aqui.

Softblue 2003/2012 - Todos os direitos reservados