ruby-on-rails - 如何在 Ruby on Rails 中将数字强制为小数点后 10 位?

标签 ruby-on-rails ruby

我的数据库中的纬度和经度值精确到小数点后 10 位:

+----+---------------+-----------------+
| id | lat           | lng             |
+----+---------------+-----------------+
| 55 | 34.4208305000 | -119.6981901000 |
| 56 | 30.2671530000 |  -97.7430608000 |

我需要查询数据库进行匹配,但我当前的变量是一个只有 6 位小数的 float :

self.lat => 30.267153

如何将我的 float 转换为具有额外的小数位以便获得匹配项?

myloc = Marker.where("lat = ?", self.lat)

我看过 Decimal 和 BigDecimal 文档。这些是最好的方法吗?

Ruby 1.8.7,Rails 3。感谢您的任何建议。

最佳答案

您可以使用 sprintf —或者更简单的兄弟String#% — 将 float 格式化为带 10 位小数的字符串:

f = 30.267153
s = "%0.10f" % f
#=> "30.2671530000"

不过,这对我来说似乎很可疑;您的 lat 和 lng 列是什么类型的字段?您使用的是什么 RDBMS?您真的要精确比较浮点值吗?您真的要将它们存储为字符串吗?

关于ruby-on-rails - 如何在 Ruby on Rails 中将数字强制为小数点后 10 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974812/

相关文章:

ruby-on-rails - Rails 3 路由处理多个非必需参数

ruby-on-rails - #<Devise::OmniauthCallbacksController:0x007fb5d1741e48> 的未定义局部变量或方法 `flash'

ruby-on-rails - 编辑操作中没有 respond_to block (使用脚手架生成)?

Ruby eigenclass(单例类)创建了吗?为了哪个?

javascript - rails : Javascript for tracking sessions firing inconsistently

ruby-on-rails - 处理 nil 对象和属性的最佳实践是什么?

ruby-on-rails - 测试:没有路由匹配 {:action= >"show", :controller= >"users", :id=>nil}

php - RUBY 和 RAILS 相对于 PHP 和 CODEIGNITER 的主要优势是什么

ruby-on-rails - 尝试访问连接表Rails中的属性

ruby - 如何选择第一个内部数组?