我的数据库中的纬度和经度值精确到小数点后 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/