一尘不染

什么代表SQL Server中的double?

c#

我有一对夫妇在性C#这是double我想将这些存储在SQL
Server中的表,但发现没有double类型,所以什么是最好的使用,decimal还是float

这将存储纬度和经度值,因此我需要最精确的精度。

感谢到目前为止的答复。


阅读 1366

收藏
2020-05-19

共1个答案

一尘不染

float

或者,如果您想去老学校:

real

您也可以使用float(53),但这与float含义相同。

(“真实”等效于float(24),而不是float / float(53)。)

小数(X,Y) 的SQL Server类型是当你想 确切的
十进制数字,而不是浮点数(可近似)。这与C#“十进制”数据类型相反,后者更像是128位浮点数。

MSSQL 浮点型* 的精度与.NET中的64位 精度型不 完全相同
(尾数IIRC略有不同),但是对于大多数用途来说,它的匹配程度非常接近。
*

为了使事情更加混乱,C#中的“浮点数”仅为32位,因此在SQL中,它与MSSQL中的real / float(24)类型等效于与float /
float(53)比较。

在您的特定用例中…
您所需要的只是小数点后5位,以表示大约一米的精度内的纬度和经度,并且度数的小数点前最多只需要三位数字。浮点数(24)或十进制(8,5)最适合您在MSSQL中的需求,并且在C#中使用浮点数就足够了,您不需要加倍。实际上,您的用户可能会感谢您舍入到小数点后5位,而不是顺带一串无关紧要的数字。

2020-05-19