1

次の 60 の倍数を見つける方法を (float である可能性のある数値が与えられた場合) 見つけたいと思います。次
のように動作します。

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 に答える