找到下一个数字的倍数

时间:2013-10-03 15:17:40

标签: perl int division

我想找到(给出一个可能是浮点数的数字)如何找到60的下一个倍数 我正在做以下工作:

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

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

2 个答案:

答案 0 :(得分: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的倍数。

答案 1 :(得分: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;