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

> Documentation sur les fonctions d’arrondi

# Fonctions d’arrondi

<Note>
  La documentation ci-dessous est générée à partir de la table système `system.functions`
</Note>

{/*AUTOGENERATED_START*/}

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

Introduit dans : v1.1.0

Comme [`floor`](#floor), mais renvoie le plus petit nombre arrondi qui est supérieur ou égal à `x`.
Si l'arrondi provoque un dépassement de capacité (par exemple, `ceiling(255, -1)`), le résultat est indéfini.

**Syntaxe**

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

**Alias** : `ceiling`

**Arguments**

* `x` — La valeur à arrondir. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)
* `N` — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est zéro, ce qui correspond à un arrondi à l’entier. Peut être négatif. [`(U)Int*`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un nombre arrondi du même type que `x`. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)

**Exemples**

**Utilisation de base**

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

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

**Précision négative**

```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>

Introduit dans : v1.1.0

Renvoie le plus grand nombre arrondi inférieur ou égal à `x`, où ce nombre arrondi est un multiple de `1 / 10 * N`, ou le nombre le plus proche du type de données approprié si `1 / 10 * N` n’est pas exact.

Les arguments entiers peuvent être arrondis avec un argument `N` négatif.
Avec un `N` non négatif, la fonction renvoie `x`.

Si l’arrondi provoque un dépassement de capacité (par exemple, `floor(-128, -1)`), le résultat est indéfini.

**Syntaxe**

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

**Arguments**

* `x` — La valeur à arrondir. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)
* `N` — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est zéro, ce qui signifie un arrondi à l'entier. Peut être négatif. [`(U)Int*`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un nombre arrondi du même type que `x`. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

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

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

**Précision négative**

```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>

Introduit dans : v1.1.0

Arrondit une valeur à un nombre donné de décimales `N`.

* Si `N > 0`, la fonction arrondit à droite de la virgule.
* Si `N < 0`, la fonction arrondit à gauche de la virgule.
* Si `N = 0`, la fonction arrondit à l’entier le plus proche.

La fonction renvoie le nombre le plus proche à l’ordre spécifié.
Si la valeur d’entrée est à égale distance de deux nombres voisins, la fonction utilise l’arrondi bancaire pour les entrées `Float*` et arrondit en s’éloignant de zéro pour les autres types numériques (`Decimal*`).

Si l’arrondi provoque un dépassement de capacité (par exemple, `round(255, -1)`), le résultat est indéfini.

**Syntaxe**

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

**Arguments**

* `x` — Un nombre à arrondir. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)
* `N` — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est `0`. [`(U)Int*`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un nombre arrondi du même type que `x`. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)

**Exemples**

**Entrées de type Float**

```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 │
└─────┴──────────┘
```

**Entrées de type Decimal**

```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>

Introduit dans : v1.1.0

Prend un nombre représentant l’âge d’une personne, le compare aux tranches d’âge standard et renvoie soit la valeur la plus élevée, soit la valeur la plus basse de la tranche dans laquelle il se situe.

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

**Syntaxe**

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

**Arguments**

* `age` — Un nombre représentant un âge en années. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Valeur renvoyée**

Renvoie l'âge le plus élevé ou le plus bas de la plage dans laquelle se situe `age`. [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

```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>

Introduit dans : v20.1.0

Arrondit un nombre à la position décimale spécifiée `N`.
Si le nombre à arrondir se trouve exactement à mi-chemin entre deux nombres, la fonction utilise une méthode d’arrondi appelée arrondi bancaire, qui est la méthode d’arrondi par défaut des nombres à virgule flottante selon la norme IEEE 754.

* Si `N > 0`, la fonction arrondit à droite de la virgule
* Si `N < 0`, la fonction arrondit à gauche de la virgule
* Si `N = 0`, la fonction arrondit à l’entier le plus proche

<Info>
  **Notes**

  * Lorsque le nombre à arrondir se trouve exactement à mi-chemin entre deux nombres, il est arrondi vers le chiffre pair le plus proche à la position décimale spécifiée.
    Par exemple : `3.5` s’arrondit à `4`, `2.5` s’arrondit à `2`.
  * La fonction `round` applique le même arrondi aux nombres à virgule flottante.
  * La fonction `roundBankers` arrondit également les entiers de la même manière, par exemple `roundBankers(45, -1) = 40`.
  * Dans les autres cas, la fonction arrondit les nombres à l’entier le plus proche.
</Info>

<Tip>
  **Utilisez l’arrondi bancaire pour les additions et les soustractions**

  L’arrondi bancaire permet de réduire l’effet de l’arrondi sur les résultats de l’addition ou de la soustraction de ces nombres.

  Par exemple, additionnez les nombres `1.5, 2.5, 3.5, 4.5` avec différents types d’arrondi :

  * Sans arrondi : `1.5 + 2.5 + 3.5 + 4.5 = 12`.
  * Arrondi bancaire : `2 + 2 + 4 + 4 = 12`.
  * Arrondi à l’entier le plus proche : `2 + 3 + 4 + 5 = 14`.
</Tip>

**Syntaxe**

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

**Arguments**

* `x` — Nombre à arrondir. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`Float*`](/fr/reference/data-types/float)
* `[, N]` — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est `0`. [`(U)Int*`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une valeur arrondie selon la méthode de l'arrondi bancaire. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Utilisation de base**

```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>

Introduit dans : v20.1.0

Arrondit un nombre vers le bas à un élément du tableau spécifié.
Si la valeur est inférieure à la borne minimale, cette dernière est renvoyée.

**Syntaxe**

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

**Arguments**

* `num` — Nombre à arrondir à l'inférieur. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`Float*`](/fr/reference/data-types/float)
* `arr` — Tableau des éléments auxquels arrondir `num` à l'inférieur. [`Array((U)Int*)`](/fr/reference/data-types/array) ou [`Array(Float*)`](/fr/reference/data-types/array)

**Valeur renvoyée**

Renvoie un nombre arrondi à l'inférieur à une valeur de `arr`. Si la valeur est inférieure à la borne la plus basse, cette borne est renvoyée. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Exemple d'utilisation**

```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>

Introduit dans : v1.1.0

Arrondit un nombre à la durée couramment utilisée inférieure la plus proche parmi les valeurs suivantes : `1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000`.
Si le nombre est inférieur à un, la fonction renvoie `0`.

**Syntaxe**

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

**Arguments**

* `num` — Un nombre à arrondir à l’une des valeurs de l’ensemble des durées courantes. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Valeur renvoyée**

Renvoie `0` pour `num` \< 1. Sinon, l’une des valeurs suivantes : `1, 10, 30, 60, 120, 180, 240, 300, 600, 1200, 1800, 3600, 7200, 18000, 36000`. [`UInt16`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d’utilisation**

```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>

Introduit dans : v1.1.0

Arrondit un nombre à la puissance de deux entière non négative inférieure la plus proche.
Si le nombre est inférieur à un, la fonction renvoie `0`.

**Syntaxe**

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

**Arguments**

* `num` — Un nombre à arrondir. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Valeur renvoyée**

Renvoyer `num` arrondi à la plus grande puissance de deux (entière non négative) inférieure ou égale à `num`, sinon `0` si `num < 1`. [`(U)Int*`](/fr/reference/data-types/int-uint) ou [`Float*`](/fr/reference/data-types/float)

**Exemples**

**Exemple d'utilisation**

```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>

Introduit dans : v1.1.0

Comme [`floor`](#floor), mais renvoie le nombre arrondi dont la valeur absolue est la plus grande tout en restant inférieure ou égale à celle de `x`.

**Syntaxe**

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

**Alias** : `truncate`

**Arguments**

* `x` — La valeur à arrondir. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)
* `N` — Facultatif. Le nombre de décimales auquel arrondir. La valeur par défaut est zéro, ce qui correspond à un arrondi à l’entier. [`(U)Int*`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un nombre arrondi du même type que `x`. [`Float*`](/fr/reference/data-types/float) ou [`Decimal*`](/fr/reference/data-types/decimal) ou [`(U)Int*`](/fr/reference/data-types/int-uint)

**Exemples**

**Utilisation de base**

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

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