我有一对夫妇在性C#这是double我想将这些存储在SQL Server中的表,但发现没有double类型,所以什么是最好的使用,decimal还是float?
C#
double
decimal
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位,而不是顺带一串无关紧要的数字。