2011-03-10 91 views
2

...我有一個Grails領域類處理的地理位置數據,以便與谷歌地圖交互:正確的數據類型用於存儲谷歌地圖的經度和緯度值?

Float latitude 
Float longitude 

當以下值獲得保存到數據庫:

緯度:2.5485291419153366,經度: - 76.03939712047577

我最終分別擁有:2.54853; -76.0394。 在這種情況下保留初始值的最佳方法是什麼?

感謝advannce

回答

2

你可能會想使用的BigDecimal。使用BigDecimal控制數字位數時,浮點數不會保證爲100%accurit。 Grails不會爲此提供約束,因此您必須使用setScale方法來確定要存儲的位數。更多信息請參閱 http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html

+0

...聽起來不錯,我怎麼指定在這種情況下,精確度?我正在考慮驗證,但無法找到任何細節,或者直視時忽略它:-( – vector 2011-03-10 18:34:04

+0

已更新我的答案。 – Jared 2011-03-10 18:46:05

+0

... fyi ..這是我最終做的最後:\t BigDecimal的緯度 \t BigDecimal的經度 \t靜態約束= { \t \t緯度(規模:16) \t \t經度(規模:16) \t} – vector 2011-03-11 00:22:13

7

另一種選擇是將它們存儲爲字符串。我知道這看起來很奇怪,但你可能只是將值傳遞迴地圖API,而不是自己做任何真正的計算。如果是這樣的話,字符串很容易。僅僅因爲某些東西是一個數字,並不意味着它必須以數字數據類型存儲。

+0

...完全正確,不計算正在做,我m只是將值傳遞給JavaScript腳本在gsp視圖中,但只需要通過更聰明的人來運行它。 – vector 2011-03-10 18:44:15

2

......這裏到底是我決定去:

BigDecimal latitude 
BigDecimal longitude 

static constraints = { 
    latitude(scale : 16) 
    longitude(scale : 16) 
} 
相關問題