我使用Dashing作为Ruby的项目。
我有一个在数据库中运行时返回19.42
的SQL查询。但是,当我将其放入代码时,它返回.1942
。我想弄清楚的是如何让小数点向右移动两个位置。
以下是查询和代码的外观:
require 'mysql2'
SCHEDULER.every '2h', :first_in => 0 do |job|
# MySQL connection
db = Mysql2::Client.new(:host => "host", :username => "username", :password => "password", :port => port, :database => "database" )
sql6 = "SELECT AVG(tickets.total_user_waiting) / (60 * 60) AS 'Total Tickets' FROM tickets WHERE tickets.status IN ('resolved', 'archived') AND tickets.date_resolved between date_format(date_sub(now(), interval 7 day), '%Y-%m-%d 00:00:00') and date_format(date_sub(now(), interval 1 day), '%Y-%m-%d 23:59:59');"
response_sql = db.query(sql6)
send_event('response_sql', {current: response_sql.first['Total Tickets']})
以下是数据库中SQL查询的结果:
+-------------+
| 19.40648160 |
+-------------+
用Ruby编写的代码输出如下:
0.194064816E2
我并不担心删除结束数字,因为我只是将小数点后两位放在右边,尽管那是理想的。
我尝试了选择回合,但在数据库中没有运气。
答案 0 :(得分:3)
值0.194064816E2
在数学上与19.40648160
等效。就像你写了0.194064816 x 10^2
一样。例如,如果我启动IRB并将该值抛出到变量中,则正确的float返回:
2.0.0-p481 :001 > x = 0.194064816E2
=> 19.4064816
我不确定为什么Ruby会打印特定的符号,但如果您正在执行任何其他操作,那么所有数字都应该正常运行。
答案 1 :(得分:-1)
解决我遇到的问题的解决方案是。
send_event('response_sql', {current: response_sql.first['Total Tickets'].ceil})
所以我所做的是在发送事件结束时添加了.ceil
。然后它将它四舍五入为两个数字。