1

我想找到(给定一个可能是浮点数的数字)如何找到下一个 60 的倍数。
我正在执行以下操作:

my $nextMultiple = int($input/$constant);                                                                                                                                         
$nextMultiple = ((int($nextMultiple/60)) * 60);                                                                                                                                   
$nextMultiple += 60;  

我实际上是故意在最后一行添加 60。有没有更好的方法呢?

4

2 回答 2

2

次高:

 #  121 =>  180    -119 =>  -60
 #  120 =>  180    -120 =>  -60
 #  119 =>  120    -121 => -120

 $n - ($n % 60) + 60

下一个最大的:

 #  121 =>  180    -119 => -120
 #  120 =>  180    -120 => -180
 #  119 =>  120    -121 => -180

 $n + ( $n >= 0 ? +1 : -1 ) * ( 60 - (abs($n) % 60) )

$n % 60 == 0会告诉你 $n 是否是 60 的倍数。

于 2013-10-03T15:45:19.550 回答
1

如果您希望 60 的倍数保持不变:

use POSIX 'ceil';

my $next_multiple = ceil(($input/$constant)/60) * 60;

如果您希望将 60 的倍数提升到下一个倍数(就像您现有的代码一样):

use POSIX 'floor';

my $next_multiple = (1 + floor(($input/$constant)/60)) * 60;
于 2013-10-03T15:25:29.087 回答