

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Types numériques
<a name="r_Numeric_types201"></a>

**Topics**
+ [Types d’entier](#r_Numeric_types201-integer-types)
+ [Type DECIMAL ou NUMERIC](#r_Numeric_types201-decimal-or-numeric-type)
+ [Notes sur l’utilisation des colonnes DECIMAL ou NUMERIC 128 bits](#r_Numeric_types201-notes-about-using-128-bit-decimal-or-numeric-columns)
+ [Types à virgule flottante](#r_Numeric_types201-floating-point-types)
+ [Calculs avec les valeurs numériques](r_numeric_computations201.md)
+ [Littéraux entiers et à virgule flottante](r_numeric_literals201.md)
+ [Exemples avec les types numériques](r_Examples_with_numeric_types201.md)

Les types de données numériques incluent les entiers, les décimaux et les nombres à virgule flottante. 

## Types d’entier
<a name="r_Numeric_types201-integer-types"></a>

Utilisez les types de données SMALLINT, INTEGER et BIGINTpour stocker les nombres entiers de différentes plages. Vous ne pouvez pas stocker de valeurs en dehors de la plage autorisée pour chaque type. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/redshift/latest/dg/r_Numeric_types201.html)

## Type DECIMAL ou NUMERIC
<a name="r_Numeric_types201-decimal-or-numeric-type"></a>

Utilisez le type de données DECIMAL ou NUMERIC pour stocker les valeurs avec une *précision définie par l’utilisateur*. Les mots clés DECIMAL et NUMERIC sont interchangeables. Dans ce document, *decimal* est le terme privilégié pour ce type de données. Le terme *numeric* (numérique) est utilisé de façon générique pour faire référence aux types de données integer, decimal et floating-point (entier, décimal et virgule flottante). 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/redshift/latest/dg/r_Numeric_types201.html)

Définissez une colonne DECIMAL dans une table en spécifiant une *precision (précision)* et une *scale (échelle)* : 

```
decimal(precision, scale)
```

 *precision*   
Le nombre total de chiffres significatifs dans la valeur entière : le nombre de chiffres de chaque côté de la virgule. Par exemple, le nombre `48.2891` a une précision de 6 et une échelle de 4. La précision par défaut, si elle n’est pas spécifiée, est de 18. La précision maximale est de 38.  
 Si le nombre de chiffres à gauche de la virgule dans une valeur d’entrée dépasse la précision de la colonne moins son échelle, la valeur ne peut pas être copiée dans la colonne (ou insérée ou mise à jour). Cette règle s’applique à toute valeur qui se trouve en dehors de la plage de la définition de la colonne. Par exemple, la plage autorisée de valeurs pour une colonne `numeric(5,2)` s’étend de `-999.99` à `999.99`. 

 *échelle*   
Le nombre de chiffres décimaux de la partie fractionnaire de la valeur, à droite de la virgule. Les entiers possèdent une échelle égale à zéro. Dans une spécification de colonne, la valeur de l’échelle doit être inférieure ou égale à la valeur de la précision. L’échelle par défaut, si elle n’est pas spécifiée, est de 0. L’échelle maximale est de 37.  
Si l’échelle d’une valeur d’entrée chargée dans une table est supérieure à l’échelle de la colonne, la valeur est arrondie à l’échelle spécifiée. Par exemple, la colonne PRICEPAID de la table SALES est une colonne DECIMAL(8,2). Si une valeur DECIMAL(8,4) est insérée dans la colonne PRICEPAID, la valeur est arrondie à une échelle de 2.   

```
insert into sales
values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null);

select pricepaid, salesid from sales where salesid=0;

pricepaid | salesid
-----------+---------
4323.90 |       0
(1 row)
```
 Cependant, les résultats de conversions explicites de valeurs sélectionnées dans les tables ne sont pas arrondis.

**Note**  
La valeur positive maximale que vous pouvez insérer dans une colonne DECIMAL(19,0) est `9223372036854775807` (263 -1). La valeur négative maximale est `-9223372036854775808`. Par exemple, une tentative d’insérer la valeur `9999999999999999999` (19 fois le chiffre neuf) entraîne une erreur de dépassement de capacité. Quelque soit le placement de la virgule décimale, la plus grande chaîne qu’Amazon Redshift puisse représenter comme nombre DECIMAL est `9223372036854775807`. Par exemple, la plus grande valeur que vous puissiez charger dans une colonne DECIMAL(19,18) est `9.223372036854775807`.  
Ces règles sont dues au fait que les valeurs de type DECIMAL d’une précision de 19 chiffres significatifs ou moins sont stockées en interne sous forme d’entiers de 8 octets, tandis que celles de type DECIMAL d’une précision de 20 à 38 chiffres significatifs sont stockées sous forme d’entiers de 16 octets. 

## Notes sur l’utilisation des colonnes DECIMAL ou NUMERIC 128 bits
<a name="r_Numeric_types201-notes-about-using-128-bit-decimal-or-numeric-columns"></a>

N’attribuez pas de façon arbitraire une précision maximale aux colonnes DECIMAL, sauf si vous avez la certitude que votre application a besoin de cette précision. Les valeurs 128 bits utilisent deux fois plus d’espace disque que les valeurs 64 bits et peuvent ralentir le temps d’exécution des requêtes. 

## Types à virgule flottante
<a name="r_Numeric_types201-floating-point-types"></a>

Utilisez les types de données REAL et DOUBLE PRECISION pour stocker les valeurs numériques avec une *précision variable*. Ces types sont des types *inexacts*, ce qui signifie que certaines valeurs sont stockées comme approximations, de telle sorte que le stockage et le retour d’une valeur spécifique peuvent se traduire par de légers écarts. Si vous avez besoin d’un stockage et d’un calcul exacts (pour des montants monétaires, par exemple), utilisez le type de données DECIMAL.

REAL représente le format à virgule flottante simple précision, conformément à la norme IEEE 754 pour l’arithmétique binaire à virgule flottante. Il a une précision d’environ 6 chiffres et une plage d’environ 1E-37 à 1E\$137. Vous pouvez également spécifier ce type de données sous la forme FLOAT4.

DOUBLE PRECISION représente le format de virgule flottante en double précision, conformément à la norme IEEE 754 pour l’arithmétique binaire en virgule flottante. Il a une précision d’environ 15 chiffres et une plage d’environ 1E-307 à 1E\$1308. Vous pouvez également spécifier ce type de données comme FLOAT ou FLOAT8.

Outre les valeurs numériques ordinaires, les types à virgule flottante possèdent plusieurs valeurs spéciales. Quand vous utilisez ces valeurs dans SQL, entourez-les de guillemets simples :
+ `NaN` – not-a-number
+ `Infinity` : infini
+ `-Infinity` : infini négatif

Par exemple, pour insérer not-a-number dans une colonne `day_charge` de table, `customer_activity` exécutez le code SQL suivant :

```
insert into customer_activity(day_charge) values('NaN');
```