C#实体框架:读取高浮点值似乎无法正常工作?

时间:2011-04-07 13:50:26

标签: entity-framework entity

我使用实体框架生成代码来读取数据库。 但似乎在DB中存储的FLOAT值999,999,999将被读作1E9。

如何启用自动生成的代码返回正确的值999,999,999而不是1E9?

2 个答案:

答案 0 :(得分:2)

我认为该问题与EF或SQL Server无关。即使在.NET中,也无法在浮点数中存储值999,999,999:

float x = 999999999;

x的值为1E + 9。 float的精度不足以存储此值(尾数只有7位数)。类中的float属性映射到SQL Server中的real列(具有相同的精度)。

唯一的解决方案是在您的类中使用doubledecimal(在SQL Server中双精度映射到float,精度为15位)。

也许您在SQL Server中有float类型,它允许您存储值999,999,999以及float作为类的属性类型,不幸的是另一种类型。令人困惑的是,是的:SQL Server中的float对应于.NET中的double NOT TO float !)

答案 1 :(得分:0)

通常1E9是显示而不是值。也就是说,无论您使用什么控件来显示它,都会将其截断为1E9(如果缩小单元格,就像Excel一样。)

你确定它是从DB返回的实际值吗?