3

秒単位の期間を時間に変換するには、次の方法があります。たとえば、2時間半は2.30になります。また、2時間15分は2.15になります。したがって、時間数と分数を出力します。

上記の代わりに2.5または2.25を表示するようにメソッドを変更したいと思います。私は計算をするためにそのようにする必要があります。たとえば、1時間あたり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
4

2 に答える 2

6

いつものように、ジョンは正しいです。浮動小数点除算を使用するだけです。

def hour_quantity
  duration / 3600.0
end

表示するときは、次のように丸めることができます。

puts '%.2f' % hour_quantity

これにより、常に小数点以下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"
于 2012-04-27T22:10:39.193 に答える