Função ROUND

A função numérica ROUND arredonda um valor fornecido para um número determinado de lugares.

SINTAXE

Notas:
  1. Se você não especificar MODE, um valor de ROUND_HALF_EVEN será utilizado.

Se precision for um número positivo, source_number será arredondado para locais de precision à direita do ponto decimal.Se precision for negativo, o resultado será source_number arredondado para o valor absoluto de locais de precision à esquerda do ponto decimal.

source_number pode ser qualquer tipo de dados numéricos integrados; precision deve ser um inteiro. O resultado é do mesmo tipo de dados que o parâmetro source_number, a menos que source_number seja NULL, nesse caso, o resultado será NULL.

Isso significa que o resultado da função é:
  • INTEGER se source_number for INTEGER
  • FLOAT se source_number for FLOAT
  • DECIMAL se source_number for DECIMAL
Ao arredondar, as regras de arredondamento de banqueiro ou simétrico para o par mais próximo são utilizadas por padrão, a menos que um RoundingMode seja especificado.

RoundingMode

RoundingMode pode ter um dos seguintes valores:
ROUND_UP
Arredonda fora de zero. Sempre incrementa o dígito antes de uma fração descartada não zero. Esse modo de arredondamento nunca diminui a magnitude do valor calculado.
ROUND_DOWN
Arredonda para zero. Nunca incrementa o dígito antes de uma fração descartada, ou seja, trunca. Esse modo de arredondamento nunca aumenta a magnitude do valor calculado.
ROUND_CEILING
Arredonda para infinidade positiva. Se o decimal for positivo, comporta-se equivalente a ROUND_UP; se negativo, comporta-se equivalente a ROUND_DOWN. Esse modo de arredondamento nunca diminui o valor calculado.
ROUND_FLOOR
Arredonda para infinidade negativa. Se o decimal for positivo, comporta-se equivalente a ROUND_DOWN; se negativo, comporta-se equivalente a ROUND_UP. Esse modo de arredondamento nunca aumenta o valor calculado.
ROUND_HALF_UP
Arredonda para o "vizinho mais próximo", a menos que ambos os vizinhos sejam eqüidistantes, nesse caso, arredonda para cima. Comporta-se equivalente a ROUND_UP se a fração descartada for maior que, ou igual a, 0,5; caso contrário, comporta-se equivalente a ROUND_DOWN. Esse é o modo de arredondamento que é geralmente ensinado nas escolas.
ROUND_HALF_DOWN
Arredonda para o "vizinho mais próximo", a menos que ambos os vizinhos sejam eqüidistantes, nesse caso, arredonda para baixo. Comporta-se equivalente a ROUND_UP se a fração descartada for maior que 0,5; caso contrário, comporta-se equivalente a ROUND_DOWN.
ROUND_HALF_EVEN
Arredonda para o "vizinho mais próximo", a menos que ambos os vizinhos sejam eqüidistantes, nesse caso, arredonda para o vizinho par. Comporta-se equivalente a ROUND_HALF_UP se o dígito à esquerda da fração descartada for ímpar; comporta-se equivalente a ROUND_HALF_DOWN se for par. Esse é o modo de arredondamento que minimiza o erro acumulativo quando aplicado repetidamente sobre uma seqüência de cálculos; às vezes é chamado de arredondamento de Banqueiro.
A tabela a seguir fornece um resumo das operações de arredondamento, com precisão zero, sob os diferentes modos de arredondamento.
Número de Entrada ROUND UP ROUND DOWN ROUND CEILING ROUND FLOOR ROUND HALF UP ROUND HALF DOWN ROUND HALF EVEN
5.5 6 5 6 5 6 5 6
2.5 3 2 3 2 3 2 2
1.6 2 1 2 1 2 2 2
1.1 2 1 2 1 1 1 1
1.0 1 1 1 1 1 1 1
-1.0 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1
-1.6 -2 -1 -1 -2 -2 -2 -2
-2.5 -3 -2 -2 -3 -3 -2 -2
-5.5 -6 -5 -5 -6 -6 -5 -6
Exemplos utilizando o modo de arredondamento padrão (ROUND_HALF_EVEN):
ROUND(27.75, 2)
returns 27.75
ROUND(27.75, 1)
returns 27.8
ROUND(27.75, 0)
retorna 28
ROUND(27.75, -1)
retorna 30
Exemplos utilizando o modo de arredondamento com uma precisão de zero:
ROUND(5.5, 0 MODE ROUND_UP);
retorna 6
ROUND(5.5, 0 MODE ROUND_DOWN);
retorna 5
ROUND(5.5, 0 MODE ROUND_CEILING);
retorna 6
ROUND(5.5, 0 MODE ROUND_FLOOR);
retorna 5
ROUND(5.5, 0 MODE ROUND_HALF_UP);
retorna 6
ROUND(5.5, 0 MODE ROUND_HALF_DOWN);
retorna 5
ROUND(5.5, 0 MODE ROUND_HALF_EVEN);
retorna 6
ROUND(2.5, 0 MODE ROUND_UP);
retorna 3
ROUND(2.5, 0 MODE ROUND_DOWN);
retorna 2
ROUND(2.5, 0 MODE ROUND_CEILING);
retorna 3
ROUND(2.5, 0 MODE ROUND_FLOOR);
retorna 2
ROUND(2.5, 0 MODE ROUND_HALF_UP);
retorna 3
ROUND(2.5, 0 MODE ROUND_HALF_DOWN);
retorna 2
ROUND(2.5, 0 MODE ROUND_HALF_EVEN);
retorna 3

Se possível, a escala é alterada para o valor fornecido. Se o resultado não puder ser representado em uma escala determinada, ela será INFINITY.

Conceitos relacionados
Visão Geral do ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Referências relacionadas
Diagramas de Sintaxe: Tipos Disponíveis
Funções Numéricas ESQL
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:12:45

ak05380_