我在c#中有一对双属性,我想在SQL Server中存储这些表,但注意到没有双类型,所以最好使用什么,十进制或浮点数?

这将存储纬度和经度值,因此我需要最精确的精度。

谢谢你的回复。


当前回答

对于SQL Sever:

十进制类型是128位有符号的数字 Float是一个64位有符号数。

真正的答案是浮点数,小数我说错了。

原因是如果你使用小数,你将永远不会填满十进制类型的64位。

尽管如果你尝试使用int类型,decimal不会给你一个错误。

这里有一个很好的类型参考图表。

其他回答

你应该把它映射到FLOAT(53)——这就是LINQ to SQL所做的。

Float在SQL server中表示double。你可以在visual studio的c#代码中找到一个证明。在这里,我已经在SQL server和c#中声明了一个Float。这样我就能皈依

int diff=4;
attendance.OverTime = Convert.ToDouble(diff);

这里的OverTime被声明为float类型

SQL Server中的float实际上具有[编辑:几乎]“double”的精度(在c#的意义上)。

Float是Float(53)的同义词。53是尾数的位数。

. net双使用54位作为尾数。

另外,这里有一个关于SQL-CLR类型映射的很好的答案,其中有一个有用的图表。

从那篇文章(大卫):

对于SQL Sever:

十进制类型是128位有符号的数字 Float是一个64位有符号数。

真正的答案是浮点数,小数我说错了。

原因是如果你使用小数,你将永远不会填满十进制类型的64位。

尽管如果你尝试使用int类型,decimal不会给你一个错误。

这里有一个很好的类型参考图表。