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)
- 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)
- 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