flutuante e real (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Tipos de dados numéricos aproximados para uso com dados numéricos de ponto flutuante. Os dados de ponto flutuante são aproximados; portanto, nem todos os valores no intervalo de tipo de dados podem ser representados de maneira exata. O sinônimo ISO de real é float(24) .

Convenções de sintaxe de Transact-SQL

Sintaxe

float [ (n) ] em que n é o número de bits usado para armazenar a mantissa do número float na notação científica e, portanto, exige a precisão e o tamanho do armazenamento. Se n for especificado, ele precisará ser um valor entre 1 e 53. O valor padrão de n é 53.

Valor de n Precisão Tamanho de armazenamento
1-24 7 dígitos 4 bytes
25-53 15 dígitos 8 bytes

Observação

SQL Server trata n como um dos dois valores possíveis. Se 1<=n<=24, n é trado como 24. Se 25<=n<=53, n é trado como 53.

O tipo de dados SQL Server float[ (n) ] está em conformidade com o padrão ISO para todos os valores de n de 1 a 53. O sinônimo de double precision é float(53) .

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Comentários

Tipo de dados Intervalo Armazenamento
float - 1,79E+308 a -2,23E-308, 0 e 2,23E-308 a 1,79E+308 Depende do valor de n
real - 3,40E + 38 a -1,18E - 38, 0 e 1,18E - 38 a 3,40E + 38 4 bytes

Convertendo dados float e real

Os valores de float são truncados quando são convertidos em qualquer tipo de inteiro.

Quando desejar fazer a conversão de float ou real em dados de caractere, normalmente, é mais útil usar a função de cadeia de caracteres STR do que CAST( ). Isso porque STR habilita mais controle nas formatações. Para obter mais informações, confira STR (Transact-SQL) e Funções (Transact-SQL).

Antes do SQL Server 2016 (13.x), a conversão de valores float para decimal ou numeric era restrita somente a valores com precisão de 17 dígitos. Qualquer valor float menor que 5E-18 (quando definido usando a notação científica de 5E-18 ou a notação decimal de 0,000000000000000005) é arredondado para 0. Essa não é mais uma restrição no SQL Server 2016 (13.x) em diante.

Confira também

ALTER TABLE (Transact-SQL)
CAST e CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
Conversão de tipo de dados (Mecanismo de Banco de Dados)
Tipos de dados (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
SET @local_variable (Transact-SQL)