36

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

您可以将其转换为 Double 还是会丢失数字?

4

6 回答 6

76

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

T-SQL float 和 real 类型定义可以在MSDN中找到。C# 双重定义也可以在MSDN上找到,浮点定义也可以。

于 2009-02-13T14:39:58.013 回答
15

查看:

在您的情况下,SQL Server 本机类型浮点映射到 SQL Server CLR SqlDouble,然后在 .Net 中映射到Double

更新(2016 年 5 月)

msdn 文档的更新版本:映射 CRL 参数数据

于 2009-02-27T16:36:41.663 回答
0

C# 有一个 float 类型,但它也可以转换为 double 类型。

于 2009-02-13T14:38:05.553 回答
0

据我回忆,大部分 ORM 工具都会将其映射为 Decimal 类型,不会像 double 或 float 那样丢失精度。

于 2009-02-13T14:39:39.667 回答
0

这取决于 SQL 浮点数的大小。对于等同于 float(53) 的普通“float”,您需要使用 C# double。对于 float(24) 或更低,C# float 就足够了,或者 double 也可以。

于 2009-02-13T14:43:32.077 回答
0

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

于 2009-02-13T14:46:01.447 回答