Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Função MySQL ROUND() – Arredonda um número para um determinado número de casas decimais


No MySQL, o ROUND() A função permite arredondar um número para cima ou para baixo para um determinado número de casas decimais.

A maneira como funciona é que você fornece o número como um argumento e tem a opção de escolher para quantas casas decimais arredondar o número. Se você não especificar o número de casas decimais, o resultado não terá casas decimais.


Sintaxe


Esta função pode ser usada de uma das seguintes maneiras:
ROUND(X)
ROUND(X,D)

Onde X é o número e D é o número de casas decimais para as quais você deseja arredondar. Se você omitir D , o número será arredondado para zero casas decimais.

Além disso, D pode ser negativo. Isso resulta em D dígitos à esquerda do ponto decimal do valor X para se tornar zero.

Exemplo 1 – Usando um argumento


Aqui está um exemplo básico para demonstrar o que acontece quando não fornecemos um segundo argumento.
SELECT ROUND(1.49) Result;

Resultado:
+--------+
| Result |
+--------+
|      1 |
+--------+

Nesse caso, o número é arredondado para o inteiro mais próximo.

Se aumentarmos a parte fracionária, eis o que acontece:
SELECT ROUND(1.50) Result;

Resultado:
+--------+
| Result |
+--------+
|      2 |
+--------+

Nesse caso, o número é arredondado para cima.

Exemplo 2 – Usando dois argumentos


Veja como podemos usar um segundo argumento para especificar as casas decimais para arredondar o número.
SELECT ROUND(1.234, 2) Result;

Resultado:
+--------+
| Result |
+--------+
|   1.23 |
+--------+

E aqui está o que acontece quando eu aumento o último dígito para 5:
SELECT ROUND(1.235, 2) Result;

Resultado:
+--------+
| Result |
+--------+
|   1.24 |
+--------+

Claro, poderíamos usar muito mais casas decimais. Por exemplo, poderíamos reduzir muitas casas decimais.
SELECT ROUND(1.23456789123456789, 8) Result;

Resultado:
+------------+
| Result     |
+------------+
| 1.23456789 |
+------------+

Ou podemos aumentar o número de casas decimais.
SELECT ROUND(1.234, 8) Result;

Resultado:
+------------+
| Result     |
+------------+
| 1.23400000 |
+------------+

Exemplo 3 – Usando um valor negativo para o segundo argumento


Veja como podemos usar um valor negativo no segundo argumento para fazer com que partes da parte não fracionária sejam arredondadas para zero.
SELECT ROUND(123.456, -1) Result;

Resultado:
+--------+
| Result |
+--------+
|    120 |
+--------+

E aqui está como ele fica arredondado se aumentarmos o 3 para 5 ou mais.
SELECT ROUND(125.456, -1) Result;

Resultado:
+--------+
| Result |
+--------+
|    130 |
+--------+

Exemplo 4 – Arredondamento de números negativos x números positivos


Conforme visto nos exemplos anteriores, ao usar números positivos, um valor com uma parte fracionária de 0,5 ou maior é arredondado para o próximo inteiro.

No entanto, ao usar números negativos, esses valores são arredondados para baixo .
SELECT 
  ROUND(1.50) Positive,
  ROUND(-1.50) Negative;

Resultado:
+----------+----------+
| Positive | Negative |
+----------+----------+
|        2 |       -2 |
+----------+----------+

Arredondamento de números de valor aproximado


A regra de arredondamento acima se aplica apenas a números de valor exato. Para números de valor aproximado, o resultado depende da biblioteca C. A documentação do MySQL afirma isso sobre números de valor aproximado:

Em muitos sistemas, isso significa que ROUND() usa a regra “arredondar para o par mais próximo”:Um valor com uma parte fracionária exatamente na metade entre dois inteiros é arredondado para o inteiro par mais próximo.

E aqui está o exemplo usado nessa página:
SELECT 
  ROUND(2.5), 
  ROUND(25E-1);

Resultado:
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
|          3 |            2 |
+------------+--------------+