sql >> Databáze >  >> RDS >> Sqlserver

Co představuje double v SQL serveru?

float

Nebo pokud chcete jít do staré školy:

real

Můžete také použít float(53), ale to znamená totéž jako float.

(„skutečný“ je ekvivalentní k float(24), nikoli float/float(53).)

desítkové (x,y) Typ SQL Server je pro případ, kdy chcete přesné desetinná čísla spíše než s pohyblivou řádovou čárkou (což mohou být aproximace). To je v kontrastu s "desítkovým" datovým typem C#, který je spíše jako 128bitové číslo s plovoucí desetinnou čárkou.

float MSSQL typ je ekvivalentní 64bitovému dvojitému zadejte .NET. (Moje původní odpověď z roku 2011 říkala, že by v mantisách mohl být nepatrný rozdíl, ale testoval jsem to v roce 2020 a zdá se, že jsou 100% kompatibilní ve svém binárním vyjádření velmi malých i velmi velkých čísel – viz https:/ /dotnetfiddle.net/wLX5Ox pro můj test).

Aby to bylo více matoucí, "float" v C# je pouze 32bitový, takže by byl v SQL ekvivalentnější typu real/float(24) v MSSQL než float/float(53).

Ve vašem konkrétním případě použití... Vše, co potřebujete, je 5 míst za desetinnou čárkou k vyjádření zeměpisné šířky a délky s přesností asi jednoho metru a pro stupně vám stačí až tři číslice před desetinnou čárkou. Float(24) nebo decimal(8,5) bude nejlépe vyhovovat vašim potřebám v MSSQL a použití float v C# je dost dobré, nepotřebujete double. Ve skutečnosti vám vaši uživatelé pravděpodobně poděkují za zaokrouhlení na 5 desetinných míst, místo aby vám na cestu přicházela spousta bezvýznamných číslic.



  1. Průvodce návrhem databáze pro hlasování a průzkum v MySQL

  2. Jak funguje funkce Date() v SQLite

  3. Platné formáty časových řetězců pro funkce data/času SQLite

  4. Záleží na pořadí tabulek, na které se odkazuje v klauzuli ON v JOIN?