2012-06-02 63 views
0

我使用實體框架和mysql作爲後端。將浮點值插入到mysql數據庫不一致性

我有一個實體,它有lat和long類型的float。

假設值是緯度:45.50818長:-73.55409

在數據庫DB中的值插入後緯度:45.508183和 長:-73.554092

在分貝類型是浮動(10,6)

額外的3和2來自哪裏?

此外,當我查詢數據庫的我的實體包含正確的緯度/長...

任何幫助表示讚賞,

謝謝

回答

2

你應該使用十進制數據類型,而不是

decimal(10,6) 

Flaoting point numbers只是近似數字。定義float(10,6)意味着您只能存儲該精度,但該精度之後該數字可能不準確。定點數字沒有這個問題。

+0

會嘗試,但你知道背後的原因? – pdiddy

+1

請注意,'decimal'也是一個浮點類型。實際上浮點數不是「只有近似數字」 - 而是他們不能準確地表示每個可能的數字*,特別是*二進制*浮點數不能準確地表示某些「簡單」數字,例如0.1。 –

+1

簡單來說,十進制值是精確的。浮動不是。當精度不重要時,浮點允許不精確和更快的計算。 http://stackoverflow.com/questions/618535/what-is-the-difference-between-decimal-float-and-double-in-c – xQbert