Как заставить число до десяти десятичных знаков в Ruby on Rails?
У меня есть значения широты и долготы в моей базе данных до 10 знаков после запятой:
+----+---------------+-----------------+
| id | lat | lng |
+----+---------------+-----------------+
| 55 | 34.4208305000 | -119.6981901000 |
| 56 | 30.2671530000 | -97.7430608000 |
Мне нужно запросить db для соответствия, но моя текущая переменная - это float с шестью десятичными знаками:
self.lat => 30.267153
Как я могу конвертировать мой float, чтобы иметь дополнительные десятичные числа, чтобы получить совпадение?
myloc = Marker.where("lat = ?", self.lat)
Я видел документы Decimal и BigDecimal. Это лучший подход?
Ruby 1.8.7, Rails 3. Спасибо за любой совет.
Ответы
Ответ 1
Вы можете использовать sprintf
— или более простой брат String#%
— ваш номер с плавающей запятой в виде строки с 10 десятичными знаками:
f = 30.267153
s = "%0.10f" % f
#=> "30.2671530000"
Это кажется мне подозрительным; какие типы полей являются вашими столбцами lat и lng? Какие СУБД вы используете? Вы действительно хотите точно сравнивать значения с плавающей запятой? Вы действительно хотите хранить их как строки?
Ответ 2
вы можете попробовать следующее:
"%.10f" % self.lat