如何在Ruby on Rails中将数字强制为10个小数位?

我的数据库中有经度和纬度值,小数点后10位:

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

我需要查询数据库的匹配,但我目前的变量是只有6位小数的浮点数:

self.lat => 30.267153

我怎样才能将我的浮点数转换成具有额外的小数位数,以便获得一个匹配项?

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

我见过十进制和BigDecimal文档。 这是最好的方法吗?

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


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

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

尽管如此,这对我来说似乎很诡异。 你的lat和lng列有哪些类型的字段? 你使用的是什么RDBMS? 你真的想要精确地比较浮点值吗? 你真的想把它们存储为字符串吗?


你可以试试这个:

"%.10f" % self.lat
链接地址: http://www.djcxy.com/p/85825.html

上一篇: How do I force a number to 10 decimal places in Ruby on Rails?

下一篇: What can I do against floating point notations Errors?