我想找到(给出一个可能是浮点数的数字)如何找到60的下一个倍数 我正在做以下工作:
my $nextMultiple = int($input/$constant);
$nextMultiple = ((int($nextMultiple/60)) * 60);
$nextMultiple += 60;
我实际上是故意在最后一行添加60。有更好的方法吗?
答案 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;