sql >> Base de Datos >  >> RDS >> Mysql

Función MySQL ROUND ():redondea un número a un número dado de lugares decimales

En MySQL, ROUND() le permite redondear un número hacia arriba o hacia abajo a un número determinado de lugares decimales.

La forma en que funciona es que proporciona el número como argumento y tiene la opción de elegir a cuántos lugares decimales redondear el número. Si no especifica el número de lugares decimales, el resultado no tendrá lugares decimales.

Sintaxis

Esta función se puede utilizar de cualquiera de las siguientes formas:

ROUND(X)
ROUND(X,D)

Donde X es el número y D es el número de lugares decimales al que desea redondearlo. Si omite D , el número se redondeará a cero decimales.

Además, D puede ser negativo. Esto da como resultado D dígitos a la izquierda del punto decimal del valor X convertirse en cero.

Ejemplo 1:uso de un argumento

Aquí hay un ejemplo básico para demostrar lo que sucede cuando no proporcionamos un segundo argumento.

SELECT ROUND(1.49) Result;

Resultado:

+--------+
| Result |
+--------+
|      1 |
+--------+

En este caso, el número se redondea al entero inferior más próximo.

Si aumentamos la parte fraccionaria, esto es lo que sucede:

SELECT ROUND(1.50) Result;

Resultado:

+--------+
| Result |
+--------+
|      2 |
+--------+

En este caso, el número se redondea hacia arriba.

Ejemplo 2:uso de dos argumentos

Así es como podemos usar un segundo argumento para especificar los lugares decimales para redondear el número.

SELECT ROUND(1.234, 2) Result;

Resultado:

+--------+
| Result |
+--------+
|   1.23 |
+--------+

Y esto es lo que sucede cuando aumento el último dígito a 5:

SELECT ROUND(1.235, 2) Result;

Resultado:

+--------+
| Result |
+--------+
|   1.24 |
+--------+

Por supuesto, podríamos usar muchos más lugares decimales. Por ejemplo, podríamos recortar muchos lugares decimales.

SELECT ROUND(1.23456789123456789, 8) Result;

Resultado:

+------------+
| Result     |
+------------+
| 1.23456789 |
+------------+

O podríamos aumentar el número de lugares decimales.

SELECT ROUND(1.234, 8) Result;

Resultado:

+------------+
| Result     |
+------------+
| 1.23400000 |
+------------+

Ejemplo 3:uso de un valor negativo para el segundo argumento

Así es como podemos usar un valor negativo en el segundo argumento para hacer que partes de la parte no fraccionaria se redondeen a cero.

SELECT ROUND(123.456, -1) Result;

Resultado:

+--------+
| Result |
+--------+
|    120 |
+--------+

Y así es como se redondea si aumentamos el 3 a 5 o más.

SELECT ROUND(125.456, -1) Result;

Resultado:

+--------+
| Result |
+--------+
|    130 |
+--------+

Ejemplo 4:redondeo de números negativos frente a números positivos

Como se vio en los ejemplos anteriores, cuando se usan números positivos, un valor con una parte fraccionaria de .5 o mayor se redondea al siguiente entero.

Sin embargo, cuando se usan números negativos, dichos valores se redondean hacia abajo .

SELECT 
  ROUND(1.50) Positive,
  ROUND(-1.50) Negative;

Resultado:

+----------+----------+
| Positive | Negative |
+----------+----------+
|        2 |       -2 |
+----------+----------+

Redondeo de números de valor aproximado

La regla de redondeo anterior solo se aplica a números de valor exacto. Para números de valor aproximado, el resultado depende de la biblioteca C. La documentación de MySQL establece esto sobre los números de valor aproximado:

En muchos sistemas, esto significa que ROUND() utiliza la regla de "redondear al par más cercano":un valor con una parte fraccionaria exactamente a la mitad entre dos números enteros se redondea al número par más cercano.

Y aquí está el ejemplo usado en esa página:

SELECT 
  ROUND(2.5), 
  ROUND(25E-1);

Resultado:

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