Emm*_*anu 1 ruby ruby-on-rails
我正在尝试将浮点数形式(hh.mm)的时间除以整数。例如,1.30 x 2必须为00.45。有没有简单的方法可以做到这一点?
使用浮点表达h.mm有点不寻常。通常,您将使用字符串进行格式化。
但是,我将从浮点值中提取小时和分钟开始。为此,我将使用以下命令将float转换为字符串format:
time = 1.3
time_str = format('%.2f', time)
#=> "1.30"
Run Code Online (Sandbox Code Playgroud)
然后,我将split在字符串处.获取小时部分和分钟部分,并调用to_i将其转换为实际的整数:(我在map这里使用,之后也可以调用h = h.to_i/ m = m.to_i)
h, m = time_str.split('.').map(&:to_i)
h #=> 1
m #=> 30
Run Code Online (Sandbox Code Playgroud)
现在我们有了数字1并且30为整数,我们可以轻松地以分钟为单位计算总持续时间:
duration = h * 60 + m
#=> 90
Run Code Online (Sandbox Code Playgroud)
然后,我将持续时间除以2(或任何值):
duration /= 2
#=> 45
Run Code Online (Sandbox Code Playgroud)
并使用divmod:将其转换回小时和分钟(它一次返回两个值)
h, m = duration.divmod(60)
h #=> 0
m #=> 45
Run Code Online (Sandbox Code Playgroud)
我们可以将它们格式化为字符串:
format('%02d.%02d', h, m)
#=> "00.45"
Run Code Online (Sandbox Code Playgroud)
或将其转换回浮点数:
time = h + m.fdiv(100)
#=> 0.45
Run Code Online (Sandbox Code Playgroud)
可以这样格式化:
format('%05.2f', time)
#=> "00.45"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |