Partilhar via


flutuador e real (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Tipos de dados de número aproximado 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 tipos de dados podem ser representados exatamente. O sinónimo ISO de real é float(24).

Transact-SQL convenções de sintaxe

Syntax

float [ (n) ] Onde n é o número de bits que são usados para armazenar a mantissa do número float em notação científica e, portanto, dita a precisão e o tamanho do armazenamento. Se n for especificado, deve ser um valor entre 1 e 53. O valor padrão de n é 53.

valor n Precision Tamanho de armazenamento
1-24 7 dígitos 4 bytes
25-53 15 dígitos 8 bytes

Note

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

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

Remarks

Tipo de dados Range 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

Os tipos de dados float e real são conhecidos como tipos de dados aproximados. O comportamento de float e real segue a especificação IEEE 754 em tipos de dados numéricos aproximados. Para entender como o compilador Microsoft Visual C (MSVC) usa o padrão IEEE 754, consulte IEEE Floating-Point Representation

Os tipos de dados numéricos aproximados não armazenam os valores exatos especificados para muitos números; eles armazenam uma aproximação do valor. Para algumas aplicações, a pequena diferença entre o valor especificado e a aproximação armazenada não é relevante. Para outros, porém, a diferença é importante. Devido à natureza aproximada dos tipos de dados flutuantes e reais, não use esses tipos de dados quando o comportamento numérico exato for necessário. Exemplos que exigem valores numéricos precisos são dados financeiros ou comerciais, operações que envolvem arredondamentos ou verificações de igualdade. Nesses casos, use os tipos de dados inteiro, decimal, numérico, dinheiro ou smallmoney.

Evite usar colunas flutuantes ou reais nas condições de pesquisa da cláusula WHERE, especialmente os operadores = e <> . É melhor limitar colunas flutuantes e reais a > comparações < .

Convertendo float e dados reais

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

Quando você deseja converter de float ou real para dados de caracteres, usar a função STR string normalmente é mais útil do que CAST( ). O motivo é que STR() permite mais controle sobre a formatação. Para obter mais informações, consulte STR (Transact-SQL) e Functions (Transact-SQL).

Antes do SQL Server 2016 (13.x), a conversão de valores flutuantes em decimais ou numéricos era restrita apenas a valores de precisão de 17 dígitos. Qualquer valor flutuante inferior a 5E-18 (quando definido usando a notação científica de 5E-18 ou a notação decimal de 0,0000000000000000005) arredonda para baixo para 0. Isso não é mais uma restrição a partir do SQL Server 2016 (13.x).