我正在使用LINQtoSQL映射器和LINQ將值插入到我的數據庫(SQL Server 2008 R2)中。我的應用程序有3層,當我在插入新行時跟蹤我的應用程序時,一切都很順利。但在檢查我的數據庫後,float類型的一個字段的值會發生變化。例如當我插入12.69時,在數據庫中的值是12.6899995803833。我完全困惑,不知道該怎麼做。提前致謝。當插入到數據庫中時浮點值發生變化
1
A
回答
-1
這聽起來像是一個問題,您正在從一種類型更改爲更精確的另一種類型。
+0
這個數字更可能是以不同的方式打印。 float和double都不能實際存儲12.69,所以實際上最初的問題是錯誤的 - 作者不*將* 12.69插入到數據庫中。可能作者插入的浮點數最接近12.69,這更準確地打印爲12.6899995803833。 BTW,12.69f的精確值(假設一個IEEE浮點型): 12.68999958038330078125 如果誰告訴你,他們已經準確地存儲在12.69二進制浮點數字是錯誤的。 –
1
如果您希望您輸入的值(以10爲底)被準確表示,那麼您可能希望在SQL Server中使用decimal
(C#)和DECIMAL(p,s)
。
類型(在SQL Server和REAL
和FLOAT
)float
和double
在C#是二進制(基數爲2),並不能準確地表示許多十進制值。當然,十進制仍然具有有限的精度(在C#中修復,以及您在SQL Server中指定的內容)。
相關問題
- 1. 當數據發生變化時Listview變更重點
- 2. 當MySql數據庫條目發生變化時發送通知
- 3. 將浮點值插入到mysql數據庫不一致性
- 4. 當數據庫中的數據發生變化時更新變量
- 5. 註釋ID在插入數據庫之前發生變化
- 6. 如何插入浮點型變量在數據庫中正確
- 7. 在將數據插入到SQLite數據庫時發生異常
- 8. Asp.net當插入數據庫沒有發生任何插入
- 9. 當數據插入到數據庫時發生數組錯誤時發生錯誤
- 10. 當數據庫發生變化時,您如何管理ORM層?
- 11. 當Rails關聯發生變化時更新數據庫結構
- 12. 當數據庫表發生變化時更新FrontEnd
- 13. 當數據庫內容發生變化時啓動bpm進程
- 14. 當我插入數據庫時發生SqlException錯誤
- 15. 當我插入一個值到數據庫它插入兩行到數據庫
- 16. Pentaho - 當值發生變化時遞增
- 17. 當輸入數據發生變化時,AngularJs不更新模型
- 18. 當輸入參數發生變化時,tf變量不會改變數值
- 19. 每當輸入值發生變化時更新DOM值
- 20. 當視圖中的數據發生變化時觸發查詢
- 21. 當變量存儲實際值時,PHP將NULL插入到MySQL數據庫中
- 22. 當數據庫中的表發生變化時向用戶發送通知
- 23. 當Flex Spark List的數據發生變化時檢測到
- 24. 當我將其插入到MySQL中時,我的代碼發生了變化
- 25. 插入值到數據庫
- 26. 插入值到數據庫
- 27. 數據庫發生變化時收到通知c#
- 28. 插入圖像到mysql數據庫時發生的問題
- 29. 當數值發生變化時,MySQL增加用戶變量
- 30. 當點擊結帳按鈕時將數據插入數據庫
浮點數很棘手。查看http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/特別是「不要將它存儲在浮動」文章。 – Steve