Ao usar o Oracle Database, você pode usar funções como
TO_CHAR(number)
para retornar números como uma string, formatada com duas casas decimais (ou quantas casas decimais você precisar). Ou você pode usar funções como
ROUND(number)
e TRUNC(number)
para arredondar ou truncar o número para o número necessário de casas decimais. O TO_CHAR()
Função
Aqui está um exemplo que usa o
TO_CHAR(number)
função:SELECT TO_CHAR(1.2345, 'fm99D00')
FROM DUAL;
Resultado:
1.23
Neste caso, o número original tem mais de duas casas decimais e, portanto, o resultado simplesmente o trunca para o número especificado de zeros que segue o caractere decimal/radix (
D
) no modelo de formato. A razão pela qual usei zeros após o caractere decimal é fornecer zeros à direita, se necessário.
Exemplo:
SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;
Resultado:
7.00
Se eu não quiser os zeros à direita, posso alterar o
0
caracteres para 9
s. Aqui está uma comparação dos dois:
SELECT
TO_CHAR(7, 'fm99D00') AS "r1",
TO_CHAR(7, 'fm99D99') AS "r2"
FROM DUAL;
Resultado:
r1 r2 _______ _____ 7.00 7.
Usando
9
s neste caso, resultou em um caractere de base, mas sem casas decimais. Devo salientar que
fm
é um modificador de formato que remove qualquer preenchimento que possa ser aplicado ao resultado. Você pode omitir isso se não se importar que o resultado seja preenchido. Embora, se você fizer isso, poderá acabar com zeros à direita, mesmo ao usar o 9
elemento de formato. Aqui está o que acontece quando eu removo o
fm
do exemplo anterior:SELECT
TO_CHAR(7, '99D00') AS "r1",
TO_CHAR(7, '99D99') AS "r2"
FROM DUAL;
Resultado:
r1 r2 _________ _________ 7.00 7.00
Claro, você não está limitado apenas a duas casas decimais – você pode especificar mais casas decimais em seu modelo de formato, se necessário.
Exemplo:
SELECT TO_CHAR(7, 'fm99D0000')
FROM DUAL;
Resultado:
7.0000
O ROUND()
Função
Aqui está um exemplo que usa o
ROUND(number)
função:SELECT ROUND(1.2573, 2)
FROM DUAL;
Resultado:
1.26
Tele
ROUND()
função arredonda um número para uma determinada casa decimal. Aqui, especificamos duas casas decimais, mas poderíamos ter especificado qualquer número. Neste caso, o número foi arredondado para cima.
O TRUNC()
Função
Aqui está um exemplo que usa o
TRUNC(number)
função:SELECT TRUNC(1.2573, 2)
FROM DUAL;
Resultado:
1.25
O
TRUNC()
função trunca um número para uma determinada casa decimal. Não ocorre arredondamento.