> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación de las funciones de redondeo

# Funciones de redondeo

<Note>
  La documentación que aparece a continuación se genera a partir de la tabla del sistema `system.functions`
</Note>

{/*AUTOGENERATED_START*/}

<div id="ceil">
  ## ceil
</div>

Introducido en: v1.1.0

Como [`floor`](#floor), pero devuelve el menor número redondeado que sea mayor o igual que `x`.
Si el redondeo provoca un desbordamiento (por ejemplo, `ceiling(255, -1)`), el resultado no está definido.

**Sintaxis**

```sql theme={null}
ceiling(x[, N])
```

**Alias**: `ceiling`

**Argumentos**

* `x` — El valor que se desea redondear. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)
* `N` — Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es cero, lo que significa que se redondea a un entero. Puede ser negativo. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un número redondeado del mismo tipo que `x`. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)

**Ejemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT ceiling(123.45, 1) AS rounded
```

```response title=Response theme={null}
┌─rounded─┐
│   123.5 │
└─────────┘
```

**Precisión negativa**

```sql title=Query theme={null}
SELECT ceiling(123.45, -1)
```

```response title=Response theme={null}
┌─ceiling(123.45, -1)─┐
│                 130 │
└─────────────────────┘
```

<div id="floor">
  ## floor
</div>

Introducido en: v1.1.0

Devuelve el mayor número redondeado que sea menor o igual que `x`, donde el número redondeado es un múltiplo de `1 / 10 * N`, o el número más cercano del tipo de dato correspondiente si `1 / 10 * N` no es exacto.

Los argumentos enteros pueden redondearse con un argumento `N` negativo.
Con `N` no negativo, la función devuelve `x`.

Si el redondeo provoca un desbordamiento (por ejemplo, `floor(-128, -1)`), el resultado es indefinido.

**Sintaxis**

```sql theme={null}
floor(x[, N])
```

**Argumentos**

* `x` — El valor que se va a redondear. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)
* `N` — Opcional. El número de posiciones decimales al que redondear. El valor predeterminado es cero, lo que significa redondear a un entero. Puede ser negativo. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un número redondeado del mismo tipo que `x`. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT floor(123.45, 1) AS rounded
```

```response title=Response theme={null}
┌─rounded─┐
│   123.4 │
└─────────┘
```

**Precisión negativa**

```sql title=Query theme={null}
SELECT floor(123.45, -1)
```

```response title=Response theme={null}
┌─floor(123.45, -1)─┐
│               120 │
└───────────────────┘
```

<div id="round">
  ## round
</div>

Introducido en: v1.1.0

Redondea un valor a un número determinado de posiciones decimales `N`.

* Si `N > 0`, la función redondea a la derecha del punto decimal.
* Si `N < 0`, la función redondea a la izquierda del punto decimal.
* Si `N = 0`, la función redondea al entero más próximo.

La función devuelve el número más cercano del orden especificado.
Si el valor de entrada está a igual distancia de dos números adyacentes, la función usa redondeo bancario para entradas `Float*` y redondea alejándose de cero para los demás tipos numéricos (`Decimal*`).

Si el redondeo provoca un desbordamiento (por ejemplo, `round(255, -1)`), el resultado no está definido.

**Sintaxis**

```sql theme={null}
round(x[, N])
```

**Argumentos**

* `x` — Un número que se va a redondear. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)
* `N` — Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es `0`. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un número redondeado del mismo tipo que `x`. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)

**Ejemplos**

**Valores de entrada de coma flotante**

```sql title=Query theme={null}
SELECT number / 2 AS x, round(x) FROM system.numbers LIMIT 3;
```

```response title=Response theme={null}
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        0 │
│   1 │        1 │
└─────┴──────────┘
```

**Valores decimales**

```sql title=Query theme={null}
SELECT cast(number / 2 AS  Decimal(10,4)) AS x, round(x) FROM system.numbers LIMIT 3;
```

```response title=Response theme={null}
┌───x─┬─round(x)─┐
│   0 │        0 │
│ 0.5 │        1 │
│   1 │        1 │
└─────┴──────────┘
```

<div id="roundAge">
  ## roundAge
</div>

Introducido en: v1.1.0

Toma un número que representa la edad de una persona, lo compara con rangos de edad estándar y devuelve el valor más alto o más bajo del rango en el que se encuentra el número.

* Devuelve `0`, para `age < 1`.
* Devuelve `17`, para `1 ≤ age ≤ 17`.
* Devuelve `18`, para `18 ≤ age ≤ 24`.
* Devuelve `25`, para `25 ≤ age ≤ 34`.
* Devuelve `35`, para `35 ≤ age ≤ 44`.
* Devuelve `45`, para `45 ≤ age ≤ 54`.
* Devuelve `55`, para `age ≥ 55`.

**Sintaxis**

```sql theme={null}
roundAge(num)
```

**Argumentos**

* `age` — Un número que representa una edad en años. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve la edad más alta o más baja del rango en el que cae `age`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT *, roundAge(*) FROM system.numbers WHERE number IN (0, 5, 20, 31, 37, 54, 72);
```

```response title=Response theme={null}
┌─number─┬─roundAge(number)─┐
│      0 │                0 │
│      5 │               17 │
│     20 │               18 │
│     31 │               25 │
│     37 │               35 │
│     54 │               45 │
│     72 │               55 │
└────────┴──────────────────┘
```

<div id="roundBankers">
  ## roundBankers
</div>

Introducido en: v20.1.0

Redondea un número a la posición decimal `N` especificada.
Si el número a redondear está exactamente a mitad de camino entre dos números, la función utiliza un método de redondeo llamado redondeo bancario, que es el método de redondeo predeterminado para los números de coma flotante definidos en IEEE 754.

* Si `N > 0`, la función redondea a la derecha del punto decimal
* Si `N < 0`, la función redondea a la izquierda del punto decimal
* Si `N = 0`, la función redondea al entero más cercano

<Info>
  **Notas**

  * Cuando el número a redondear está exactamente a mitad de camino entre dos números, se redondea al dígito par más cercano en la posición decimal especificada.
    Por ejemplo: `3.5` se redondea hacia arriba a `4`, `2.5` se redondea hacia abajo a `2`.
  * La función `round` realiza el mismo tipo de redondeo para números de coma flotante.
  * La función `roundBankers` también redondea enteros de la misma forma; por ejemplo, `roundBankers(45, -1) = 40`.
  * En los demás casos, la función redondea los números al entero más cercano.
</Info>

<Tip>
  **Use el redondeo bancario para sumar o restar números**

  Al usar el redondeo bancario, puede reducir el efecto que tiene el redondeo de números en los resultados de sumarlos o restarlos.

  Por ejemplo, sume los números `1.5, 2.5, 3.5, 4.5` con distintos tipos de redondeo:

  * Sin redondeo: `1.5 + 2.5 + 3.5 + 4.5 = 12`.
  * Redondeo bancario: `2 + 2 + 4 + 4 = 12`.
  * Redondeo al entero más cercano: `2 + 3 + 4 + 5 = 14`.
</Tip>

**Sintaxis**

```sql theme={null}
roundBankers(x[, N])
```

**Argumentos**

* `x` — Un número para redondear. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal*`](/es/reference/data-types/decimal) o [`Float*`](/es/reference/data-types/float)
* `[, N]` — Opcional. El número de posiciones decimales al que se redondea. El valor predeterminado es `0`. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un valor redondeado mediante el método de redondeo bancario. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal*`](/es/reference/data-types/decimal) o [`Float*`](/es/reference/data-types/float)

**Ejemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT number / 2 AS x, roundBankers(x, 0) AS b FROM system.numbers LIMIT 10
```

```response title=Response theme={null}
┌───x─┬─b─┐
│   0 │ 0 │
│ 0.5 │ 0 │
│   1 │ 1 │
│ 1.5 │ 2 │
│   2 │ 2 │
│ 2.5 │ 2 │
│   3 │ 3 │
│ 3.5 │ 4 │
│   4 │ 4 │
│ 4.5 │ 4 │
└─────┴───┘
```

<div id="roundDown">
  ## roundDown
</div>

Introducido en: v20.1.0

Redondea un número hacia abajo al elemento del array especificado.
Si el valor es menor que el límite inferior, se devuelve el límite inferior.

**Sintaxis**

```sql theme={null}
roundDown(num, arr)
```

**Argumentos**

* `num` — Un número que se redondeará hacia abajo. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal*`](/es/reference/data-types/decimal) o [`Float*`](/es/reference/data-types/float)
* `arr` — Array de elementos al que se redondeará `num` hacia abajo. [`Array((U)Int*)`](/es/reference/data-types/array) o [`Array(Float*)`](/es/reference/data-types/array)

**Valor devuelto**

Devuelve un número redondeado hacia abajo hasta un elemento de `arr`. Si el valor es menor que el límite inferior mínimo, se devuelve ese límite. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT *, roundDown(*, [3, 4, 5]) FROM system.numbers WHERE number IN (0, 1, 2, 3, 4, 5)
```

```response title=Response theme={null}
┌─number─┬─roundDown(number, [3, 4, 5])─┐
│      0 │                            3 │
│      1 │                            3 │
│      2 │                            3 │
│      3 │                            3 │
│      4 │                            4 │
│      5 │                            5 │
└────────┴──────────────────────────────┘
```

<div id="roundDuration">
  ## roundDuration
</div>

Introducido en: v1.1.0

Redondea un número hacia abajo al valor más cercano dentro de un conjunto de duraciones de uso común: `1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000`.
Si el número es menor que uno, devuelve `0`.

**Sintaxis**

```sql theme={null}
roundDuration(num)
```

**Argumentos**

* `num` — Un número que se redondea a uno de los valores del conjunto de duraciones comunes. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve `0` para `num` \< 1. En caso contrario, uno de los siguientes: `1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000`. [`UInt16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT *, roundDuration(*) FROM system.numbers WHERE number IN (0, 9, 19, 47, 101, 149, 205, 271, 421, 789, 1423, 2345, 4567, 9876, 24680, 42573)
```

```response title=Response theme={null}
┌─number─┬─roundDuration(number)─┐
│      0 │                     0 │
│      9 │                     1 │
│     19 │                    10 │
│     47 │                    30 │
│    101 │                    60 │
│    149 │                   120 │
│    205 │                   180 │
│    271 │                   240 │
│    421 │                   300 │
│    789 │                   600 │
│   1423 │                  1200 │
│   2345 │                  1800 │
│   4567 │                  3600 │
│   9876 │                  7200 │
│  24680 │                 18000 │
│  42573 │                 36000 │
└────────┴───────────────────────┘
```

<div id="roundToExp2">
  ## roundToExp2
</div>

Introducido en: v1.1.0

Redondea un número hacia abajo hasta la potencia de dos (entera no negativa) más cercana.
Si el número es menor que uno, devuelve `0`.

**Sintaxis**

```sql theme={null}
roundToExp2(num)
```

**Argumentos**

* `num` — Número que se va a redondear. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve `num` redondeado hacia abajo hasta la potencia de dos más cercana (entera no negativa); en caso contrario, devuelve `0` si `num < 1`. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT *, roundToExp2(*) FROM system.numbers WHERE number IN (0, 2, 5, 10, 19, 50)
```

```response title=Response theme={null}
┌─number─┬─roundToExp2(number)─┐
│      0 │                   0 │
│      2 │                   2 │
│      5 │                   4 │
│     10 │                   8 │
│     19 │                  16 │
│     50 │                  32 │
└────────┴─────────────────────┘
```

<div id="trunc">
  ## trunc
</div>

Introducido en: v1.1.0

Como [`floor`](#floor), pero devuelve el número redondeado cuyo valor absoluto es el mayor que no supera el de `x`.

**Sintaxis**

```sql theme={null}
truncate(x[, N])
```

**Alias**: `truncate`

**Argumentos**

* `x` — El valor que se redondeará. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)
* `N` — Opcional. El número de posiciones decimales al que se redondeará. El valor predeterminado es cero, lo que significa que se redondea a un entero. [`(U)Int*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un número redondeado del mismo tipo que `x`. [`Float*`](/es/reference/data-types/float) o [`Decimal*`](/es/reference/data-types/decimal) o [`(U)Int*`](/es/reference/data-types/int-uint)

**Ejemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT truncate(123.499, 1) AS res;
```

```response title=Response theme={null}
┌───res─┐
│ 123.4 │
└───────┘
```
