将秒数转换为小时数(半小时为.50而非30)

leo*_*nel 3 ruby ruby-on-rails

我有以下方法将持续时间(以秒为单位)转换为小时.例如,2个半小时将导致2.30另外,2小时和15分钟将导致2.15.因此它输出小时数和分钟数.

我想修改方法显示2.5或2.25而不是上面的方法.我需要这样做才能进行计算.例如,如果有30美元/小时的工资和员工工作10个半小时,我需要增加30*10.5而不是30*10.30.

def hour_quantity
  unless self.duration.blank?
    hours = (self.duration/60)/60
    minutes = (self.duration/60) % 60
    hours.to_s + '.' + minutes.to_s
  end
end
Run Code Online (Sandbox Code Playgroud)

Nik*_* B. 6

像往常一样,乔恩是正确的.只需使用浮点除法:

def hour_quantity
  duration / 3600.0
end
Run Code Online (Sandbox Code Playgroud)

显示时,您可能想要舍入:

puts '%.2f' % hour_quantity
Run Code Online (Sandbox Code Playgroud)

这将给你2个小数位,总是(例如"2.00","2.25","2.50").或者:

  puts '%g' % hour_quantity
  puts '%g' % 2.0           #=> "2"
  puts '%g' % 2.25          #=> "2.25"
  puts '%g' % 2.4999999     #=> "2.5"
Run Code Online (Sandbox Code Playgroud)