Xai*_*oft 320 c# sql t-sql sql-server sql-server-2005
我有一对夫妇在性C#
这是double
我想将这些存储在SQL Server中的表,但发现没有double
类型,所以什么是最好的使用,decimal
还是float
?
这将存储纬度和经度值,因此我需要最精确的精度.
感谢到目前为止的回复.
ric*_*ent 372
float
Run Code Online (Sandbox Code Playgroud)
或者如果你想去老派:
real
Run Code Online (Sandbox Code Playgroud)
你也可以使用float(53),但它和float一样.
("real"相当于float(24),而不是float/float(53).)
该小数(X,Y)的SQL Server类型是当你想确切的十进制数字,而不是浮点数(可近似).这与C#"十进制"数据类型形成对比,后者更像是一个128位浮点数.
MSSQL float与.NET中的64位double类型没有完全相同的精度(尾数IIRC略有不同),但它与大多数用途的匹配程度非常接近.
为了让事情更加混乱,C#中的"float"只有32位,因此在SQL中,它与MSSQL中的real/float(24)类型相比,更接近float/float(53).
在您的特定用例中... 您需要的只是小数点后面的5个位置来表示大约一米精度内的纬度和经度,并且您只需要在小数点前最多三位数.Float(24)或十进制(8,5)最适合您在MSSQL中的需求,并且在C#中使用float是足够好的,您不需要double.实际上,您的用户可能会感谢您舍入到小数点后5位,而不是为了骑行而出现一堆无关紧要的数字.
gbn*_*gbn 15
float是最接近的等价物.
编辑:
对于Lat/Long,如OP所述.
一米是纬度的1/40,000,000,1秒是30米左右.Float/double给你15个有效数字.有一些快速和狡猾的心算...圆角/近似误差将是这个填充停止的长度 - >"."
float
在SQL Server中实际上[编辑:几乎]精度为"double"(在C#意义上).
float
是...的同义词float(53)
.53是尾数的位.
.NET double
使用54位作为尾数.
归档时间: |
|
查看次数: |
318410 次 |
最近记录: |