float y real (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Tipos de datos numéricos y aproximados que se utilizan con datos numéricos de coma flotante. Los datos de coma flotante son aproximados; por tanto, no todos los valores del rango del tipo de datos se pueden representar con exactitud. El sinónimo ISO para real es float(24) .
Convenciones de sintaxis de Transact-SQL
Sintaxis
float [ (n) ]Donde n es el número de bits que se usan para almacenar la mantisa del número de float en notación científica y, por tanto, dicta su precisión y el tamaño de almacenamiento. Si se especifica n, debe ser un valor entre 1 y 53. El valor predeterminado de n es 53.
Valor n | Precision | Tamaño de almacenamiento |
---|---|---|
1-24 | 7 dígitos | 4 bytes |
25-53 | 15 dígitos | 8 bytes |
Nota
SQL Server trata n como uno de dos valores posibles. Si 1<=n<=24, n se trata como 24. Si 25<=n<=53, n se trata como 53.
El tipo de datos SQL Server float[ (n) ] cumple con el estándar ISO para todos los valores de n desde 1 hasta 53. El sinónimo de double precision es float(53) .
Comentarios
Tipo de datos | Intervalo | Storage |
---|---|---|
float | De - 1,79E+308 a -2,23E-308, 0 y de 2,23E-308 a 1,79E+308 | Depende del valor de n |
real | De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E - 38 a 3,40E + 38 | 4 bytes |
Los tipos de datos float y real se conocen como tipos de datos aproximados. El comportamiento de float y real sigue la especificación IEEE 754 sobre tipos de datos numéricos aproximados. Para comprender cómo el compilador de Microsoft Visual C (MSVC) usa el estándar IEEE 754, consulte Representación de punto flotante ieee.
Los tipos de datos numéricos aproximados no almacenan los valores exactos especificados para muchos números; almacenan una aproximación cercana del valor. En algunas aplicaciones, la pequeña diferencia entre el valor especificado y la aproximación almacenada no es relevante. Sin embargo, para otros, la diferencia es importante. Debido a la naturaleza aproximada de los tipos de datos float y real, no use estos tipos de datos cuando se requiera un comportamiento numérico exacto. Ejemplos que requieren valores numéricos precisos son datos financieros o empresariales, operaciones que implican redondeo o comprobaciones de igualdad. En esos casos, use los tipos de datos integer, decimal, numeric, money o smallmoney.
Evite usar columnas float o reales en condiciones de búsqueda de cláusula WHERE, especialmente los operadores = y <> . Es mejor limitar las columnas flotantes y reales a > las comparaciones o < .
Convertir datos float y real
Los valores de float se truncan cuando se convierten en cualquier tipo entero.
Cuando se desea convertir de datos flotantes o reales a datos de caracteres, el uso de la función de cadena STR suele ser más útil que CAST( ). El motivo es que STR() permite un mayor control sobre el formato. Para más información, vea STR (Transact-SQL) y Funciones (Transact-SQL).
Antes de SQL Server 2016 (13.x), la conversión de los valores float a decimal o numeric se restringía únicamente a los valores con una precisión de 17 dígitos. Cualquier valor float menor de 5E-18 (cuando se establece mediante la notación científica de 5E-18 o la notación decimal de 0,000000000000000005) se redondea a 0. A partir de SQL Server 2016 (13.x) esto ya no es una restricción.