2011-09-23 73 views
3

我正在尝试使用实体框架,并且有一个联系人数据库,它具有来自Google地图的经度和纬度数据。C#在SQL Server中实现浮点数

指南说这应该存储为浮动。

我已经创建了我的POCO实体,其中包括Longitude作为floatLatitude作为float

我刚刚注意到,在数据库中,这两个都出现为real

在我可以从Google获取任何数据之前,还有很多工作要做,我离测试很远,我只是想知道是否有人能告诉我这是否会在稍后出现问题上?

+0

@Pranay拉娜 - 我还没有回答我没有接受! – wil

回答

6

不,应该没问题。请注意,您可能无法获得与您从Google地图收到的相同的值,因为这可能会以十进制格式文本表示。但是,这实际上是一个物理量,因此更适合作为float/double/real /(无论您喜欢的二进制浮点类型)而不是小数。 (小数更适合于人造量 - 尤其是货币。)

如果你看一下documentation for float and real你会看到real是有效float(24) - 一个32位浮点二进制点的类型,就像在C#float

编辑:正如在评论中指出,如果你想比精度显著7-8位由float提供了更多,那么你可能想在double而不是C#,这将意味着float(53)在SQL Server中。

+0

感谢您的解释,但是,我只是手动输入数据到数据库中,正如您所说的那样,它没有存储确切的值......随机位置41.710855,-93.959198被存储为41.71085,-93.9592。 ..我只是试图做一个搜索,这些位置似乎是一个3/4英里外...这是有点远:(:(我猜这可能是不同的语言的定义之间的差异的浮动?(我试图从这个例子工作 - http://code.google.com/apis/maps/articles/phpsqlsearch.html)...有没有解决方法? – wil

+0

@wil:好吧,如果你想超过7-8个有效数字,在C#中使用'double'和在数据库中使用'float(53)'。 –

+0

对不起,没有意识到这会导致一个不同的问题,但是,谢谢 – wil