Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在ruby中,如何用浮点形式(hh.mm)的时间除以整数?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在ruby中,如何用浮点形式(hh.mm)的时间除以整数?

Ruby on rails 在ruby中,如何用浮点形式(hh.mm)的时间除以整数?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图用浮点形式(hh.mm)的时间除以一个整数。 例如,1.30乘2必须等于00.45。 有什么简单的方法可以做到这一点吗?也许你可以拆分成一个数组,然后: n = 2 [1, 30].then { |h, m| [h / n, (m + h % n * 60) / n]} #=> [0, 45] 对于拆分: num = 1.3 ('%.2f' % num).split('.').map(&:to_i) #=> [1, 30] 也许您可以拆分为一个数组,然后: n =

我试图用浮点形式(hh.mm)的时间除以一个整数。 例如,1.30乘2必须等于00.45。
有什么简单的方法可以做到这一点吗?

也许你可以拆分成一个数组,然后:

n = 2
[1, 30].then { |h, m| [h / n, (m + h % n * 60) / n]}
#=> [0, 45]
对于拆分:

num = 1.3
('%.2f' % num).split('.').map(&:to_i) #=> [1, 30]

也许您可以拆分为一个数组,然后:

n = 2
[1, 30].then { |h, m| [h / n, (m + h % n * 60) / n]}
#=> [0, 45]
对于拆分:

num = 1.3
('%.2f' % num).split('.').map(&:to_i) #=> [1, 30]

您可以尝试以下操作:

num = 1.3

splitted_values = ('%.2f' % num).split('.').map(&:to_i) => [1, 30]

((splitted_values[0] * 60) / 2) + (splitted_values[1] / 2 ) => 45

您可以尝试以下操作:

num = 1.3

splitted_values = ('%.2f' % num).split('.').map(&:to_i) => [1, 30]

((splitted_values[0] * 60) / 2) + (splitted_values[1] / 2 ) => 45

使用浮点表示h.mm有点不寻常。您通常会使用字符串进行格式化

但是,我首先从浮点值中提取小时和分钟。为此,我将使用以下命令将浮点转换为字符串:

然后我在
处输入字符串以获取小时部分和分钟部分,并调用将它们转换为实际整数:(我在这里使用,您也可以在之后调用
h=h.to\u I
/
m=m.to\u I

现在我们将数字
1
30
作为整数,我们可以轻松计算总持续时间(分钟):

duration = h * 60 + m
#=> 90
然后我将持续时间除以2(或任何值):

并使用以下命令将其转换回小时和分钟:(它同时返回两个值)

我们可以将其格式化为字符串:

format('%02d.%02d', h, m)
#=> "00.45"
或者将其转换回浮点数:

time = h + m.fdiv(100)
#=> 0.45
其格式如下所示:

format('%05.2f', time)
#=> "00.45"

使用浮点表示h.mm有点不寻常。您通常会使用字符串进行格式化

但是,我首先从浮点值中提取小时和分钟。为此,我将使用以下命令将浮点转换为字符串:

然后我在
处输入字符串以获取小时部分和分钟部分,并调用将它们转换为实际整数:(我在这里使用,您也可以在之后调用
h=h.to\u I
/
m=m.to\u I

现在我们将数字
1
30
作为整数,我们可以轻松计算总持续时间(分钟):

duration = h * 60 + m
#=> 90
然后我将持续时间除以2(或任何值):

并使用以下命令将其转换回小时和分钟:(它同时返回两个值)

我们可以将其格式化为字符串:

format('%02d.%02d', h, m)
#=> "00.45"
或者将其转换回浮点数:

time = h + m.fdiv(100)
#=> 0.45
其格式如下所示:

format('%05.2f', time)
#=> "00.45"
另一个例子

time    = 1005
divisor =    5

hr, min = (time.fdiv(divisor)).divmod(1)
  #=> [201, 0.0] 
"%02d.%02d" % [hr, (60 * min).round]
  #=> "201.00" 
看,还有
divmod
是一种非常有用的方法,出于我不理解的原因,它似乎没有被充分使用

另一个例子

time    = 1005
divisor =    5

hr, min = (time.fdiv(divisor)).divmod(1)
  #=> [201, 0.0] 
"%02d.%02d" % [hr, (60 * min).round]
  #=> "201.00" 

看,还有
divmod
是一种非常有用的方法,由于我不理解的原因,它似乎没有被充分使用。

这是您的输入吗<代码>1.30一个半小时?@SebastianPalmayes@Emmanu:使用浮点数表示这样的值有什么特别的原因吗?您的意思是
0.45
还是
“00.45”
?如果是前者,请删除前导零;如果是后者,请添加引号。这是您的输入吗<代码>1.30一个半小时?@SebastianPalmayes@Emmanu:使用浮点数表示这样的值有什么特别的原因吗?您的意思是
0.45
还是
“00.45”
?如果是前者,请删除前导零;如果是后者,请添加报价。同意,1.30表示小时和分钟是一种奇怪的方式(至少在美国?)。1.5或1:30更有意义。这个答案是如何解析和转换它的一个很好的例子however@JayDorsey的确如果你想把点改成冒号,你不能用float。首先,这是错误的表述。1.30不是十进制值。同意,1.30表示小时和分钟是一种奇怪的方式(至少在美国?)。1.5或1:30更有意义。这个答案是如何解析和转换它的一个很好的例子however@JayDorsey的确如果你想把点改成冒号,你不能用float。首先,这是错误的表述。1.30不是十进制值,它是有效的,但它给出的时间单位是分钟,3.00它给出的是90,没错。但它是以分钟为单位的它起作用了但它给出的时间是以分钟为单位的3.00它给出的是90…没错。但几分钟后就到了