Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Diferença entre numérico, flutuante e decimal no SQL Server


use o float ou real tipos de dados somente se a precisão fornecida por decimal (até 38 dígitos) é insuficiente

  • Tipos de dados numéricos aproximados (consulte a tabela 3.3) não armazenam os valores exatos especificados para muitos números; eles armazenam um local extremamente próximo aproximação do valor. (Technet)

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

então geralmente escolher Decimal como seu tipo de dados é a melhor aposta se
  • seu número pode caber nele. Precisão decimal é 10E38[~ 38 dígitos]
  • menor espaço de armazenamento (e talvez velocidade de cálculo) do Float não é importante para você
  • é necessário um comportamento numérico exato, como em aplicações financeiras, em operações envolvendo arredondamento ou em verificações de igualdade. (Technet)
  1. Exato Tipos de dados numéricos decimal e numérico - MSDN
  • numérico =decimal (5 a 17 bytes)
    • será mapeado para Decimal em .NET
    • ambos têm (18, 0) como parâmetros padrão (precisão, escala) no servidor SQL
    • escala =número máximo de dígitos decimais que podem ser armazenados à direita do ponto decimal.
    • money(8 byte) e smallmoney(4 byte) também são do tipo de dados exato e serão mapeados para Decimal In .NET e terão 4 pontos decimais (MSDN)
  1. Aproximado Tipo de dados numérico float e real - MSDN
  • real (4 bytes)
    • irá mapear para Single em .NET
    • O sinônimo ISO para real é float(24)
  • float (8 bytes)
    • irá mapear para Double em .NET


  • Tudo exato os tipos numéricos sempre produzem o mesmo resultado, independentemente do tipo de arquitetura do processador que está sendo usado ou da magnitude dos números
  • O parâmetro fornecido para o tipo de dados float define o número de bits que são usados ​​para armazenar a mantissa do número de ponto flutuante .
  • O tipo de dados numérico aproximado geralmente usa menos armazenamento e tem melhor velocidade (até 20x) e você também deve considerar quando eles foram convertidos em .NET
  • Qual ​​é a diferença entre Decimal, Float e Double em C#
  • Velocidade decimal x dupla
  • SQL Server - Mapeamentos de tipo de dados .NET (do MSDN)

fonte principal :MCTS Self-Pad Training Kit (Exame 70-433):Microsoft® SQL Server® 2008 Database Development - Capítulo 3 - Tabelas , Tipos de Dados e Integridade Declarativa de Dados Lição 1 - Escolhendo Tipos de Dados (Diretrizes) - Página 93