...我有一個Grails領域類處理的地理位置數據,以便與谷歌地圖交互:正確的數據類型用於存儲谷歌地圖的經度和緯度值?
Float latitude
Float longitude
當以下值獲得保存到數據庫:
緯度:2.5485291419153366,經度: - 76.03939712047577
我最終分別擁有:2.54853; -76.0394。 在這種情況下保留初始值的最佳方法是什麼?
感謝advannce
...我有一個Grails領域類處理的地理位置數據,以便與谷歌地圖交互:正確的數據類型用於存儲谷歌地圖的經度和緯度值?
Float latitude
Float longitude
當以下值獲得保存到數據庫:
緯度:2.5485291419153366,經度: - 76.03939712047577
我最終分別擁有:2.54853; -76.0394。 在這種情況下保留初始值的最佳方法是什麼?
感謝advannce
你可能會想使用的BigDecimal。使用BigDecimal控制數字位數時,浮點數不會保證爲100%accurit。 Grails不會爲此提供約束,因此您必須使用setScale方法來確定要存儲的位數。更多信息請參閱 http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html
另一種選擇是將它們存儲爲字符串。我知道這看起來很奇怪,但你可能只是將值傳遞迴地圖API,而不是自己做任何真正的計算。如果是這樣的話,字符串很容易。僅僅因爲某些東西是一個數字,並不意味着它必須以數字數據類型存儲。
...完全正確,不計算正在做,我m只是將值傳遞給JavaScript腳本在gsp視圖中,但只需要通過更聰明的人來運行它。 – vector 2011-03-10 18:44:15
......這裏到底是我決定去:
BigDecimal latitude
BigDecimal longitude
static constraints = {
latitude(scale : 16)
longitude(scale : 16)
}
...聽起來不錯,我怎麼指定在這種情況下,精確度?我正在考慮驗證,但無法找到任何細節,或者直視時忽略它:-( – vector 2011-03-10 18:34:04
已更新我的答案。 – Jared 2011-03-10 18:46:05
... fyi ..這是我最終做的最後:\t BigDecimal的緯度 \t BigDecimal的經度 \t靜態約束= { \t \t緯度(規模:16) \t \t經度(規模:16) \t} – vector 2011-03-11 00:22:13