Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中的C#Float到Real_Sql Server_Entity Framework 4.1_Ef Code First - Fatal编程技术网

Sql server SQL Server中的C#Float到Real

Sql server SQL Server中的C#Float到Real,sql-server,entity-framework-4.1,ef-code-first,Sql Server,Entity Framework 4.1,Ef Code First,我正在尝试使用实体框架,并有一个联系人数据库,其中包含来自谷歌地图的经度和纬度数据 指南上说这应该作为浮动存储 我已经创建了我的POCO实体,其中包括经度作为浮点和纬度作为浮点 我刚刚注意到,在数据库中,它们都显示为real 在我从谷歌获得任何数据之前,还有很多工作要做,我离测试还有很长的路要走,我只是想知道是否有人能告诉我这以后是否会成为一个问题?不,应该没问题。请注意,您可能无法获得与从Google Maps收到的完全相同的值,因为该值将以十进制格式的文本表示。然而,这实际上是一个物理量,因

我正在尝试使用实体框架,并有一个联系人数据库,其中包含来自谷歌地图的经度和纬度数据

指南上说这应该作为浮动存储

我已经创建了我的POCO实体,其中包括
经度
作为
浮点
纬度
作为
浮点

我刚刚注意到,在数据库中,它们都显示为
real


在我从谷歌获得任何数据之前,还有很多工作要做,我离测试还有很长的路要走,我只是想知道是否有人能告诉我这以后是否会成为一个问题?

不,应该没问题。请注意,您可能无法获得与从Google Maps收到的完全相同的值,因为该值将以十进制格式的文本表示。然而,这实际上是一个物理量,因此作为浮点/双精度/实数/(您喜欢的任何二进制浮点类型)比作为十进制更合适。(小数更适用于人为数量,尤其是货币。)

如果你看一下,你会发现
real
实际上是
float(24)
-一种32位浮点二进制点类型,就像C#中的
float

编辑:如评论中所述,如果您想要的精度超过
float
提供的7-8位有效数字,那么您可能需要
double
而不是C#,这意味着SQL Server中的
float(53)

此链接:

说明在SQL Server中,
real
是使用4字节数据的
float(24)
的同义词。在.NET中,单精度浮点数也使用4个字节,因此这些字节相当于:


谢谢您的解释,但是,我只是手动将数据输入数据库,正如您所说,它没有存储准确的值。。。41.710855,-93.959198的随机位置存储为41.71085,-93.9592。。。我刚试着搜索了一下,发现这些位置大概有3/4英里远。。。这有点太远了:(…我猜这可能是不同语言对浮点的定义之间的差异?(我正试图从这个例子开始工作-…有解决办法吗?@wil:如果您想要超过7-8个有效数字,请在C#中使用
double
float(53)
在数据库中。很抱歉,我没有意识到这会导致一个不同的问题,但是,谢谢。为什么EF不允许在浮点上设置精度,而允许十进制?如果属性是浮点,那么我就不能设置其精度。@stt106:如果您遵循文档,看起来只有两个精度值
float/real
-对应于在C#中使用
float
double
。@Pranay-Rana-我没有回答我没有接受的答案!