Как заставить число до десяти десятичных знаков в 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