правильный тип данных для хранения карт широты и долготы? - PullRequest
2 голосов
/ 10 марта 2011

... У меня есть класс домена Grails для работы с данными географического местоположения для взаимодействия с картами Google:

    Float latitude
Float longitude

Когда следующие значения сохраняются в БД:

широта:2.5485291419153366, долгота: -76.03939712047577

В итоге получилось: 2.54853; -76.0394 соответственно.Каков наилучший способ сохранения начальных значений в этом случае?

Спасибо за преимущество

Ответы [ 3 ]

7 голосов
/ 10 марта 2011

Другой вариант - хранить их как строки.Я знаю, это кажется странным, но вы, вероятно, просто передаете значения обратно в API карт и не выполняете никаких реальных вычислений самостоятельно.Если это так, строки легко.То, что что-то является числом, не означает, что оно должно храниться в числовом типе данных.

2 голосов
/ 11 марта 2011

... в конце вот что я решил пойти:

BigDecimal latitude
BigDecimal longitude

static constraints = {
  latitude( scale : 16 )
  longitude( scale : 16 )
}
2 голосов
/ 10 марта 2011

Возможно, вы захотите использовать BigDecimal. Числа с плавающей запятой не гарантируются на 100%, в то время как вы можете контролировать количество цифр с помощью BigDecimal. Grails не предлагает ограничений для этого, поэтому вам придется использовать методы как setScale для определения количества цифр для хранения. Для получения дополнительной информации см. http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...