Compartilhar via


Usando dados decimais, flutuantes e reais

O tipo de dados decimal pode armazenar, no máximo, 38 dígitos, e todos podem ficar à direita do ponto decimal. O tipo de dados decimal armazena uma representação exata do número; não há aproximação do valor armazenado.

Os dois atributos que definem as colunas, as variáveis e os parâmetros decimal, são:

  • p

    Especifica a precisão ou o número de dígitos que o objeto pode conter.

  • s

    Especifica a escala ou o número de dígitos que podem ser colocados à direita do ponto decimal.

    p e s devem observar a regra: 0 <= s <= p <= 38.

A precisão máxima padrão de numeric e os tipos de dados decimal é 38. No Transact-SQL, numeric é a funcionalmente equivalente ao tipo de dados decimal.

Use o tipo de dados decimal para armazenar números com decimais quando os valores de dados precisarem ser armazenados exatamente conforme especificado.

Para obter mais informações sobre como as operações matemáticas afetam a precisão e a escala do resultado, consulte Precisão, escala e comprimento (Transact-SQL).

Usando dados flutuantes e reais

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 sobre tipos de dados numéricos aproximados.

Os tipos de dados numéricos aproximados não armazenam os valores exatos especificados para muitos números; eles armazenam uma aproximação extremamente perto do valor. Para muitos aplicativos, a ínfima diferença entre o valor especificado e a aproximação armazenada não é notável. Às vezes, entretanto, a diferença é percebida. Por causa da natureza aproximada dos tipos de dados float e real, não use esses tipos de dados quando o comportamento numérico exato for exigido, como em aplicativos financeiros, em operações envolvendo arredondamento ou em verificações de igualdade. Em vez disso, use tipos de dados inteiro, decimal, money ou smallmoney.

Evite usar as colunas float ou real nos critérios de pesquisa da cláusula WHERE, especialmente os operadores = e <>. É melhor limitar as colunas float e real para comparações > ou <.

A especificação IEEE 754 fornece quatro modos de arredondamento: arredondar para o mais próximo, arredondar para cima, arredondar para baixo e arredondar para zero. O MicrosoftSQL Server usa arredondamento. Tudo é preciso à exatidão garantida, mas pode resultar em valores ligeiramente diferentes de ponto flutuante. Como a representação binária de um número de ponto flutuante pode usar um de muitos esquemas de arredondamento legais, é impossível quantificar com segurança um valor de ponto flutuante.