我使用生成代碼來讀取數據庫的實體框架。 但似乎DB中存儲的FLOAT值999,999,999將被讀爲1E9。C#實體框架:讀取高浮點值似乎不能正確工作?
如何啓用自動生成的代碼返回正確的值999,999,999而不是1E9?
我使用生成代碼來讀取數據庫的實體框架。 但似乎DB中存儲的FLOAT值999,999,999將被讀爲1E9。C#實體框架:讀取高浮點值似乎不能正確工作?
如何啓用自動生成的代碼返回正確的值999,999,999而不是1E9?
通常1E9是一個顯示,而不是值。也就是說,無論控制你使用顯示它是將其截斷爲1E9(如果你退縮的細胞。如Excel一樣)
你確定它的從數據庫返回的實際價值?
我認爲這個問題與EF或SQL Server無關。即使是在.NET中,你可以的999,999,999值不是保存在一個float:
float x = 999999999;
x將有值1E + 9。 float
的精度不足以存儲此值(僅7位數尾數)。一個類中的float
屬性映射到SQL Server中的real
列(具有相同的精度)。
唯一的解決方法是(在具有15位精度的SQL Server雙重映射到float
)使用在你的類double
或decimal
。
也許你在SQL Server中輸入了float
,它允許你存儲值999,999,999和float
作爲你的類的屬性類型,這是不幸的另一種類型。這是令人困惑的,是:float
在SQL Server對應double
在.NET(不float
!)
它不是一個顯示問題。我在外生代碼中設置了條件斷點,並且看到讀取的值實際上是1E9而不是999,999,999。 – user415876 2011-04-07 14:17:47