我正在嘗試使用實體框架,並且有一個聯繫人數據庫,它具有來自Google地圖的經度和緯度數據。C#在SQL Server中實現浮點數
指南說這應該存儲爲浮動。
我已經創建了我的POCO實體,其中包括Longitude
作爲float
和Latitude
作爲float
。
我剛剛注意到,在數據庫中,這兩個都出現爲real
。
在我可以從Google獲取任何數據之前,還有很多工作要做,我離測試很遠,我只是想知道是否有人能告訴我這是否會在稍後出現問題上?
我正在嘗試使用實體框架,並且有一個聯繫人數據庫,它具有來自Google地圖的經度和緯度數據。C#在SQL Server中實現浮點數
指南說這應該存儲爲浮動。
我已經創建了我的POCO實體,其中包括Longitude
作爲float
和Latitude
作爲float
。
我剛剛注意到,在數據庫中,這兩個都出現爲real
。
在我可以從Google獲取任何數據之前,還有很多工作要做,我離測試很遠,我只是想知道是否有人能告訴我這是否會在稍後出現問題上?
不,應該沒問題。請注意,您可能無法獲得與您從Google地圖收到的相同的值,因爲這可能會以十進制格式文本表示。但是,這實際上是一個物理量,因此更適合作爲float/double/real /(無論您喜歡的二進制浮點類型)而不是小數。 (小數更適合於人造量 - 尤其是貨幣。)
如果你看一下documentation for float
and real
你會看到real
是有效float(24)
- 一個32位浮點二進制點的類型,就像在C#float
。
編輯:正如在評論中指出,如果你想比精度顯著7-8位由float
提供了更多,那麼你可能想在double
而不是C#,這將意味着float(53)
在SQL Server中。
感謝您的解釋,但是,我只是手動輸入數據到數據庫中,正如您所說的那樣,它沒有存儲確切的值......隨機位置41.710855,-93.959198被存儲爲41.71085,-93.9592。 ..我只是試圖做一個搜索,這些位置似乎是一個3/4英里外...這是有點遠:(:(我猜這可能是不同的語言的定義之間的差異的浮動?(我試圖從這個例子工作 - http://code.google.com/apis/maps/articles/phpsqlsearch.html)...有沒有解決方法? – wil
@wil:好吧,如果你想超過7-8個有效數字,在C#中使用'double'和在數據庫中使用'float(53)'。 –
對不起,沒有意識到這會導致一個不同的問題,但是,謝謝 – wil
此鏈接:
http://msdn.microsoft.com/en-us/library/aa258876(v=sql.80).aspx
解釋說,在SQL Server中,real
是float(24)
的代名詞,使用4個字節的數據。在.NET中的單精度浮點數還使用4個字節,所以這些都是非常相同的:
http://msdn.microsoft.com/en-us/library/47zceaw7(v=vs.71).aspx
@Pranay拉娜 - 我還沒有回答我沒有接受! – wil