我正在尝试使用实体框架,并且有一个联系人数据库,它具有来自Google地图的经度和纬度数据。C#在SQL Server中实现浮点数
指南说这应该存储为浮动。
我已经创建了我的POCO实体,其中包括Longitude
作为float
和Latitude
作为float
。
我刚刚注意到,在数据库中,这两个都出现为real
。
在我可以从Google获取任何数据之前,还有很多工作要做,我离测试很远,我只是想知道是否有人能告诉我这是否会在稍后出现问题上?
我正在尝试使用实体框架,并且有一个联系人数据库,它具有来自Google地图的经度和纬度数据。C#在SQL Server中实现浮点数
指南说这应该存储为浮动。
我已经创建了我的POCO实体,其中包括Longitude
作为float
和Latitude
作为float
。
我刚刚注意到,在数据库中,这两个都出现为real
。
在我可以从Google获取任何数据之前,还有很多工作要做,我离测试很远,我只是想知道是否有人能告诉我这是否会在稍后出现问题上?
不,应该没问题。请注意,您可能无法获得与您从Google地图收到的相同的值,因为这可能会以十进制格式文本表示。但是,这实际上是一个物理量,因此更适合作为float/double/real /(无论您喜欢的二进制浮点类型)而不是小数。 (小数更适合于人造量 - 尤其是货币。)
如果你看一下documentation for float
and real
你会看到real
是有效float(24)
- 一个32位浮点二进制点的类型,就像在C#float
。
编辑:正如在评论中指出,如果你想比精度显著7-8位由float
提供了更多,那么你可能想在double
而不是C#,这将意味着float(53)
在SQL Server中。
感谢您的解释,但是,我只是手动输入数据到数据库中,正如您所说的那样,它没有存储确切的值......随机位置41.710855,-93.959198被存储为41.71085,-93.9592。 ..我只是试图做一个搜索,这些位置似乎是一个3/4英里外...这是有点远:(:(我猜这可能是不同的语言的定义之间的差异的浮动?(我试图从这个例子工作 - http://code.google.com/apis/maps/articles/phpsqlsearch.html)...有没有解决方法? – wil
@wil:好吧,如果你想超过7-8个有效数字,在C#中使用'double'和在数据库中使用'float(53)'。 –
对不起,没有意识到这会导致一个不同的问题,但是,谢谢 – wil
此链接:
http://msdn.microsoft.com/en-us/library/aa258876(v=sql.80).aspx
解释说,在SQL Server中,real
是float(24)
的代名词,使用4个字节的数据。在.NET中的单精度浮点数还使用4个字节,所以这些都是非常相同的:
http://msdn.microsoft.com/en-us/library/47zceaw7(v=vs.71).aspx
@Pranay拉娜 - 我还没有回答我没有接受! – wil