No PostgreSQL, o
ceiling()
A função é usada para arredondar um número até o inteiro mais próximo. É semelhante a
round()
, exceto que ele só arredonda para cima. A round()
função irá arredondar para cima ou para baixo conforme necessário. Também é semelhante a
floor()
, exceto que floor()
arredonda para baixo em vez de subir. Sintaxe
O
ceiling()
A função pode ser usada de uma das seguintes maneiras:ceil(dp or numeric)
ceiling(dp or numeric)
Onde
dp
indica double precision
. O tipo de retorno é o mesmo que o tipo de entrada.
Ambas as sintaxes funcionam exatamente da mesma forma. A primeira sintaxe é simplesmente uma maneira mais concisa de fazer isso.
Exemplo
Aqui está um exemplo para demonstrar seu uso.
SELECT ceiling(12.10);
Resultado:
13
Nesse caso, os segundos fracionários são 10 e o número é arredondado para o inteiro mais próximo.
Provavelmente nem é preciso dizer, mas se eu aumentar os segundos fracionários para 50, ainda será arredondado.
SELECT ceiling(12.70);
Resultado:
13
Números negativos
Aqui está um exemplo que usa números negativos.
SELECT
ceiling(-12.10),
ceiling(-12.90);
Resultado:
ceiling | ceiling ---------+--------- -12 | -12
Teto() vs Teto()
Como mencionado,
ceil()
e ceiling()
são equivalentes. Aqui está um exemplo que mostra ambas as sintaxes lado a lado.
SELECT
ceil(12.10),
ceiling(12.10);
Resultado:
ceil | ceiling ------+--------- 13 | 13
Teto() vs Redondo()
Se eu estivesse usando
round()
, o 12.10
o valor teria sido arredondado para baixo (porque os segundos fracionários são menores que 50). Aqui está um exemplo que ilustra a diferença entre
ceiling()
e round()
. SELECT
ceiling(12.10),
round(12.10);
Resultado:
ceiling | round ---------+------- 13 | 12
No entanto, se eu aumentar os segundos fracionários para 50, ambos retornarão o mesmo resultado.
SELECT
ceiling(12.50),
round(12.50);
Resultado:
ceiling | round ---------+------- 13 | 13
Teto() vs Piso()
Postgres também tem um
floor()
função, que é semelhante a ceiling()
exceto que sempre arredonda o número para baixo . Aqui está um exemplo que mostra ambas as sintaxes lado a lado.
SELECT
ceiling(12.80),
floor(12.80);
Resultado:
ceiling | floor ---------+------- 13 | 12
E aqui está um exemplo que usa valores negativos.
SELECT
ceiling(-12.30),
floor(-12.30);
Resultado:
ceiling | floor ---------+------- -12 | -13