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

O que representa um duplo no servidor sql?

float

Ou se você quiser ir à velha escola:
real

Você também pode usar float(53), mas significa a mesma coisa que float.

("real" é equivalente a float(24), não float/float(53).)

O decimal(x,y) O tipo SQL Server é para quando você deseja exato números decimais em vez de ponto flutuante (que podem ser aproximações). Isso contrasta com o tipo de dados "decimal" do C#, que é mais parecido com um número de ponto flutuante de 128 bits.

float do MSSQL tipo é equivalente ao double de 64 bits digite .NET. (Minha resposta original de 2011 dizia que poderia haver uma pequena diferença na mantissa, mas testei isso em 2020 e eles parecem ser 100% compatíveis em sua representação binária de números muito pequenos e muito grandes - veja https:/ /dotnetfiddle.net/wLX5Ox para meu teste).

Para tornar as coisas mais confusas, um "float" em C# é apenas de 32 bits, então seria mais equivalente em SQL ao tipo real/float(24) em MSSQL do que float/float(53).

No seu caso de uso específico... Tudo que você precisa é de 5 casas após o ponto decimal para representar latitude e longitude com precisão de cerca de um metro, e você só precisa de até três dígitos antes do ponto decimal para os graus. Float(24) ou decimal(8,5) atenderá melhor às suas necessidades em MSSQL, e usar float em C# é bom o suficiente, você não precisa de double. Na verdade, seus usuários provavelmente agradecerão por arredondar para 5 casas decimais, em vez de ter um monte de dígitos insignificantes vindo para o passeio.