float et real (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric

Types de données approximatives à utiliser avec des données numériques à virgule flottante. Les données à virgule flottante sont approximatives ; il n'est donc pas possible de représenter précisément toutes les valeurs de ce type de données. Le synonyme ISO de real est float(24) .

Conventions de la syntaxe Transact-SQL

Syntaxe

float [ (n) ] Où n est le nombre de bits utilisés pour stocker la mantisse du nombre de type float en notation scientifique et indique par conséquent le niveau de précision et la taille de stockage. Si n est spécifié, sa valeur doit être comprise entre 1 et 53. La valeur par défaut de n est 53.

Valeur n Precision Taille de stockage
1-24 7 chiffres 4 octets
25-53 15 chiffres 8 octets

Notes

SQL Server considère n comme l’une des deux valeurs possibles. Si 1<=n<=24, n est considéré comme égal à 24. Si 25<=n<=53, n est considéré comme égal à 53.

Le type de données SQL Serverfloat [ (n) ] est conforme à la norme ISO pour toutes les valeurs de n comprises entre 1 et 53. Le synonyme de double precision est float(53) .

Notes

Type de données Plage Stockage
float - 1,79E+308 à -2,23E-308, 0 et 2,23E-308 à 1,79E+308 Dépend de la valeur de n
real - 3,40E + 38 à -1,18E - 38, 0 et 1,18E - 38 à 3,40E + 38 Quatre octets

Les types de données float et réels sont appelés types de données approximatifs. Le comportement de float et réel suit la spécification IEEE 754 sur les types de données numériques approximatifs. Pour comprendre comment le compilateur Microsoft Visual C (MSVC) utilise la norme IEEE 754, consultez la représentation à virgule flottante IEEE

Les types de données numériques approximatifs ne stockent pas les valeurs exactes spécifiées pour de nombreux nombres ; ils stockent une approximation étroite de la valeur. Pour certaines applications, la petite différence entre la valeur spécifiée et l’approximation stockée n’est pas pertinente. Pour d’autres cependant, la différence est importante. En raison de la nature approximative des types de données float et réels, n’utilisez pas ces types de données lorsque le comportement numérique exact est requis. Les exemples qui nécessitent des valeurs numériques précises sont des données financières ou commerciales, des opérations impliquant des arrondis ou des vérifications d’égalité. Dans ces cas, utilisez les types de données entier, décimal, numérique, monétaire ou smallmoney.

Évitez d’utiliser des colonnes flottantes ou réelles dans les conditions de recherche de clause WHERE, en particulier les = et <> les opérateurs. Il est préférable de limiter les colonnes flottantes et réelles à des comparaisons ou < à > des comparaisons.

Conversion de données float et real

Les valeurs de float sont tronquées lorsqu’elles sont converties en un type entier.

Lorsque vous souhaitez convertir des données float ou réelles en données caractères, l’utilisation de la fonction de chaîne STR est généralement plus utile que CAST( ). La raison est que STR() permet davantage de contrôle sur la mise en forme. Pour plus d’informations, consultez STR (Transact-SQL) et Fonctions (Transact-SQL).

Dans les versions antérieures à SQL Server 2016 (13.x), la conversion des valeurs float en valeurs decimal ou numeric est limitée à des valeurs d’une précision de 17 chiffres uniquement. Toutes les valeurs flottantes inférieures à 5E-18 (quand elles sont définies avec la notation scientifique 5E-18 ou la notation décimale 0,000000000000000005) sont arrondies à 0. Cette limitation n’existe plus dans SQL Server 2016 (13.x).