我使用实体框架生成代码来读取数据库。 但似乎在DB中存储的FLOAT值999,999,999将被读作1E9。
如何启用自动生成的代码返回正确的值999,999,999而不是1E9?
答案 0 :(得分:2)
我认为该问题与EF或SQL Server无关。即使在.NET中,也无法在浮点数中存储值999,999,999:
float x = 999999999;
x的值为1E + 9。 float
的精度不足以存储此值(尾数只有7位数)。类中的float
属性映射到SQL Server中的real
列(具有相同的精度)。
唯一的解决方案是在您的类中使用double
或decimal
(在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返回的实际值吗?