Compartir por


float y real (Transact-SQL)

Se aplica a: punto de conexión de SQL Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics System (PDW) de SQL Server en Microsoft Fabric Warehouse 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) .

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

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.