2011-04-07 21 views

回答

0

通常1E9是一個顯示,而不是值。也就是說,無論控制你使用顯示它是將其截斷爲1E9(如果你退縮的細胞。如Excel一樣)

你確定它的從數據庫返回的實際價值?

+0

它不是一個顯示問題。我在外生代碼中設置了條件斷點,並且看到讀取的值實際上是1E9而不是999,999,999。 – user415876 2011-04-07 14:17:47

2

我認爲這個問題與EF或SQL Server無關。即使是在.NET中,你可以的999,999,999值不是保存在一個float:

float x = 999999999; 

x將有值1E + 9。 float的精度不足以存儲此值(僅7位數尾數)。一個類中的float屬性映射到SQL Server中的real列(具有相同的精度)。

唯一的解決方法是(在具有15位精度的SQL Server雙重映射到float)使用在你的類doubledecimal

也許你在SQL Server中輸入了float,它允許你存儲值999,999,999和float作爲你的類的屬性類型,這是不幸的另一種類型。這是令人困惑的,是:float在SQL Server對應double在.NET(float!)

相關問題