Utilisation des types de données decimal, float et real

Le type de données decimal peut stocker jusqu'à 38 chiffres pouvant tous se trouver à droite de la virgule décimale. Il stocke une représentation exacte du nombre decimal, sans aucune approximation de la valeur stockée.

Les deux attributs qui définissent les colonnes, les variables et les paramètres decimal sont les suivants :

  • p

    Spécifie la précision ou le nombre de chiffres que l'objet peut posséder.

  • s

    Spécifie l'échelle ou le nombre de chiffres qui peuvent être placés à droite de la virgule décimale.

    p et s doivent observer la règle suivante : 0 <= s <= p <= 38.

La précision maximale par défaut des types de données numeric et decimal est 38. Dans Transact-SQL, le type numeric présente les mêmes fonctions que le type de données decimal.

Utilisez le type de données decimal pour stocker des chiffres avec des décimales lorsque les valeurs de données doivent être stockées exactement comme spécifié.

Pour plus d'informations sur la façon dont les opérations mathématiques affectent la précision et l'échelle du résultat, consultez Précision, échelle et longueur (Transact-SQL).

Utilisation des types de données float et real

Les types de données float et real sont des types de données approximatifs. Le comportement de float et de real suit la spécification IEEE 754 sur les types de données numériques approximatifs.

Les types de données numériques approximatifs ne stockent pas les valeurs exactes spécifiées pour de nombreux chiffres mais une approximation extrêmement précise de la valeur. Pour de nombreuses applications, l'infime différence qui existe entre la valeur spécifiée et l'approximation stockée n'est pas perceptible, sauf occasionellement. Les types de données float et real présentant un caractère approximatif, ne les utilisez pas lorsqu'un comportement numérique exact est requis, comme dans les applications financières, les opérations comprenant des arrondis ou les vérifications d'égalité. Utilisez plutôt les types de données integer, decimal, money ou smallmoney.

Évitez d'utiliser les colonnes float ou real dans les conditions de recherche de la clause WHERE, plus particulièrement les opérateurs = et <>. L'idéal est de limiter les colonnes float et real aux signes de comparaison > ou <.

La spécification IEEE 754 fournit quatre méthodes d'arrondi : arrondi à la valeur la plus proche, à la valeur supérieure, à la valeur inférieure et à zéro. Microsoft SQL Server utilise l'arrondi à la valeur supérieure. Toutes garantes de la précision, ces méthodes peuvent néanmoins créer des valeurs en virgule flottante légèrement différentes. Comme la représentation binaire d'un nombre en virgule flottante peut utiliser un des nombreux schémas d'arrondi autorisés, il est impossible de quantifier de manière fiable une valeur en virgule flottante.