sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad repræsenterer en dobbelt i sql-server?

float

Eller hvis du vil gå i old-school:

real

Du kan også bruge float(53), men det betyder det samme som float.

("real" svarer til float(24), ikke float/float(53).)

decimalen(x,y) SQL Server-typen er til, når du vil have nøjagtig decimaltal frem for flydende komma (som kan være tilnærmelser). Dette er i modsætning til C#-datatypen "decimal", som mere ligner et 128-bit flydende decimaltal.

MSSQL's float type svarer til 64-bit dobbelt indtast .NET. (Mit originale svar fra 2011 sagde, at der kunne være en lille forskel i mantisse, men jeg har testet dette i 2020, og de ser ud til at være 100 % kompatible i deres binære repræsentation af både meget små og meget store tal -- se https:/ /dotnetfiddle.net/wLX5Ox til min test).

For at gøre tingene mere forvirrende er en "float" i C# kun 32-bit, så den ville være mere ækvivalent i SQL med real/float(24)-typen i MSSQL end float/float(53).

I dit specifikke brugstilfælde... Alt du behøver er 5 pladser efter decimaltegnet for at repræsentere breddegrad og længdegrad inden for cirka en meter præcision, og du behøver kun op til tre cifre før decimaltegnet for graderne. Float(24) eller decimal(8,5) passer bedst til dine behov i MSSQL, og at bruge float i C# er godt nok, du behøver ikke dobbelt. Faktisk vil dine brugere sandsynligvis takke dig for at runde af til 5 decimaler i stedet for at have en masse ubetydelige cifre med på turen.



  1. Opgradering til den nyeste Jira med den seneste version af MariaDB Server

  2. Sådan forvandler du et json-array til rækker i postgres

  3. hvordan får man vist fuld lagret procedurekode?

  4. Sammenligning af høj tilgængelighed af databaser - MySQL / MariaDB-replikering vs Oracle Data Guard