我在c#中有一对双属性,我想在SQL Server中存储这些表,但注意到没有双类型,所以最好使用什么,十进制或浮点数?
这将存储纬度和经度值,因此我需要最精确的精度。
谢谢你的回复。
我在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不会给你一个错误。
这里有一个很好的类型参考图表。