
# Champs numériques

Six types de champs stockent des nombres, des devises, des pourcentages, des notes et des indicateurs de progression. Tous partagent les [propriétés de base des champs](/fr/docs/tables-overview#proprietes-de-base-des-champs).

| Type         | Stocke                                                   |
| ------------ | -------------------------------------------------------- |
| `integer`    | Nombres entiers avec une plage min/max optionnelle.      |
| `decimal`    | Décimaux à précision fixe (1–10 décimales).              |
| `currency`   | Valeurs monétaires avec code ISO 4217 et mise en forme.  |
| `percentage` | Valeurs en pourcentage, affichées avec `%`.              |
| `rating`     | Note en étoiles/icônes avec un maximum configurable.     |
| `progress`   | Une barre de progression 0–100 avec couleur optionnelle. |

## `integer`

Nombres entiers sans décimales. Optimisé pour la performance.

| Propriété | Description                                          |
| --------- | ---------------------------------------------------- |
| `min`     | Valeur minimale autorisée (incluse).                 |
| `max`     | Valeur maximale autorisée (incluse).                 |
| `default` | Entier par défaut pour les nouveaux enregistrements. |

```yaml
- { id: 1, name: quantity, type: integer, required: true, min: 0, max: 1000, default: 1 }
```

## `decimal`

Nombres avec décimales, stockés avec une précision `DECIMAL` exacte.

| Propriété   | Description                                           |
| ----------- | ----------------------------------------------------- |
| `precision` | Nombre de décimales. Entier de **1 à 10**.            |
| `min`       | Valeur minimale autorisée (incluse).                  |
| `max`       | Valeur maximale autorisée (incluse).                  |
| `default`   | Décimal par défaut pour les nouveaux enregistrements. |

```yaml
- { id: 2, name: weight, type: decimal, precision: 2, min: 0.01, max: 999.99, default: 1.0 }
```

## `currency`

Valeurs monétaires avec une mise en forme d'affichage adaptée à la locale.

| Propriété            | Description                                                                           |
| -------------------- | ------------------------------------------------------------------------------------- |
| `currency`           | **Requis.** Code ISO 4217 à trois lettres (par ex. `USD`, `EUR`, `GBP`, `JPY`).       |
| `precision`          | Nombre de décimales. Entier de **0 à 10** (par défaut 2 pour la plupart des devises). |
| `min`                | Valeur minimale autorisée (incluse).                                                  |
| `max`                | Valeur maximale autorisée (incluse).                                                  |
| `symbolPosition`     | Placement du symbole monétaire : `before` ($100) ou `after` (100€).                   |
| `negativeFormat`     | Affichage des valeurs négatives : `minus` (-100) ou `parentheses` ((100)).            |
| `thousandsSeparator` | Caractère de groupement des milliers : `comma`, `period`, `space` ou `none`.          |

```yaml
- id: 3
  name: price
  type: currency
  required: true
  currency: USD
  precision: 2
  symbolPosition: before
  negativeFormat: parentheses
  thousandsSeparator: comma
```

:::callout
**Corrigé par rapport aux docs antérieures.** `currency` utilise `thousandsSeparator` — une énumération (`comma | period | space | none`), et **non** un booléen. `negativeFormat` accepte `minus` ou `parentheses` (il n'y a pas d'option `red`), et `precision` varie de **0 à 10**.
:::

## `percentage`

Valeurs en pourcentage (typiquement 0–100), affichées avec un symbole `%`.

| Propriété   | Description                                               |
| ----------- | --------------------------------------------------------- |
| `precision` | Nombre de décimales. Entier de **0 à 10** (par défaut 0). |
| `min`       | Valeur minimale autorisée (incluse, typiquement 0).       |
| `max`       | Valeur maximale autorisée (incluse, typiquement 100).     |
| `default`   | Pourcentage par défaut pour les nouveaux enregistrements. |

```yaml
- { id: 4, name: discount_rate, type: percentage, precision: 1, min: 0, max: 100, default: 10.0 }
```

## `rating`

Une valeur de note rendue sous forme d'étoiles ou d'autres indicateurs.

| Propriété | Description                                                   |
| --------- | ------------------------------------------------------------- |
| `max`     | Valeur de note maximale. Entier de **1 à 10** (par défaut 5). |
| `style`   | Style visuel de la note (par ex. `stars`).                    |
| `default` | Valeur de note par défaut pour les nouveaux enregistrements.  |

```yaml
- { id: 5, name: product_rating, type: rating, max: 5, style: stars }
```

:::callout
**Corrigé par rapport aux docs antérieures.** Le champ rating utilise `max` et `style` — et **non** `ratingMax` / `ratingStyle`.
:::

## `progress`

Affiche une valeur 0–100 sous forme de barre de progression. Utilisé pour suivre l'avancement vers un objectif.

| Propriété | Description                                                                           |
| --------- | ------------------------------------------------------------------------------------- |
| `color`   | Couleur de la barre de progression en hexadécimal sur 6 chiffres (par ex. `#10B981`). |
| `default` | Valeur de progression par défaut (0–100) pour les nouveaux enregistrements.           |

```yaml
- { id: 6, name: task_completion, type: progress, color: '#10B981', default: 0 }
```

:::callout
**Corrigé par rapport aux docs antérieures.** Le champ progress utilise `color` (une chaîne hexadécimale) — et **non** `progressColor`.
:::
