在数据库中浮动到?在.NET中

在数据库中浮动到?在.NET中,.net,sql-server,types,floating-point,double,.net,Sql Server,Types,Floating Point,Double,如果在MSSQLServer中有一个浮点数,那么在.NET中将其映射到什么 你能把它转换成双精度还是会丢失数字?C#有一个浮点数类型,但它也能转换成双精度。据我回忆,大多数ORM工具都会把它映射成十进制类型,它不会像double或float那样丢失精度。SQLServerfloat和C#/VBdouble具有相同的表示形式。这是正确的映射。您不想做的是将SQL Serverfloat映射到C#/VBfloat,因为这可能会导致精度损失。SQL Serverreal映射到C#/VBfloat T-

如果在MSSQLServer中有一个浮点数,那么在.NET中将其映射到什么


你能把它转换成双精度还是会丢失数字?

C#有一个浮点数类型,但它也能转换成双精度。

据我回忆,大多数ORM工具都会把它映射成十进制类型,它不会像double或float那样丢失精度。

SQLServer
float
和C#/VB
double
具有相同的表示形式。这是正确的映射。您不想做的是将SQL Server
float
映射到C#/VB
float
,因为这可能会导致精度损失。SQL Server
real
映射到C#/VB
float


T-SQL浮点和实数类型定义可在中找到。C#双定义也可以在中找到,浮点也可以。它取决于SQL浮点的大小。对于与float(53)等价的普通“float”,您需要使用C#double。对于浮点数(24)或更低的浮点数,C浮点数就足够了,或者双精度浮点数也可以。

由Microsoft XSD生成的自动代码将SQL浮点数(默认浮点数)转换为C浮点数。
所以你可以说这不是什么大错误
直到您使用具有默认大小的浮点。

签出:

  • 有关SQL Server和.Net之间的数据类型映射的完整参考
在您的情况下,SQL Server本机类型float映射到SQL Server CLRSqlDouble,然后映射到.Net中的Double

更新(2016年5月)


msdn文档的更新版本:

错误,尽管您可以将任何SQL server浮点值映射到C#double,但无法将任何C#double映射到SQL server浮点值。。。但它通常适用于“正常”的大/小数字这并不是严格正确的-即使是实/浮(24)。SQL Server没有标准IEEE754(C#/VB.NET)规则支持的NaN或+/-Inf的概念。这应该是正确的答案。谢谢你的链接。现在有一个更新版本。谢谢@MatthisKohli-现在添加了答案的新链接