3

我正在使用 mvc4。我有一个模型。在该模型中,我创建了一个名为“AllFuels”的数据类型 Float 的字段。但是当表在数据库中自动创建时,字段“AllFuels”的数据类型是真实的。我使用模型优先方法。有人知道发生这种情况的原因吗?

public float AllFuels { get; set; }

但是表中的这个字段被创建为真正的数据类型。

4

1 回答 1

0

...为什么会这样?

嗯,这很容易 - 因为这是编程到 EF 中的映射。

有关系吗?

请看以下内容:

因此,两者的“近似范围相同,存储量也相同:它们都是 32 位浮点二进制点类型。令人讨厌的是,.NET 浮点数在BOL 参考中没有特别提到数据类型转换,这使得快速查找它变得很困难

此外,Edm.Float在 Edm 数据类型(MSDN:Conceptual Model Types (CSDL))中被列为具有 7 位精度的浮点数,因此与 .NET 中的浮点数和 SQL 服务器中的实数相匹配(CSDL是 XML 语言描述实体、关系等并由 EF 使用)。

所以我该怎么做?

Microsoft 对 ADO.NET 中的浮点数有何看法?如果您阅读:MSDN - ADO.NET(浮点数)中的数据类型映射,他们会说“测试”。所以这样做,如果这个精度对你来说不够,那么你的 .NET 类型需要改为 a double,它应该成为 SQL Server 中更高精度的类型(float(53)我相信它会转换为 )


我无法快速找到 IEEE 参考资料,因此我将在维基百科中为您指出“近似范围”的定义

编辑Guru Lasse V. Karlsen要求我对这个陈述进行限定是完全正确的:Single相当于float我表达得很糟糕的观点是你必须知道寻找Single而不是float能够找到参考资料中的信息。

于 2013-05-19T10:32:44.640 回答