web-dev-qa-db-ja.com

Perlで整数除算を行うにはどうすればよいですか?

always Perlで整数除算を行う良い方法は何ですか?

たとえば、私は欲しい:

real / int = int

int / real = int

int / int = int
55
Bryan Denny

Perlでintをキャストできます。

int(5/1.5) = 3;
42
Bryan Denny

字句的にスコープされた integerプラグマ は、Perlがそのスコープで整数演算を使用することを強制します。

print 3.0/2.1 . "\n";    # => 1.42857142857143
{
  use integer;
  print 3.0/2.1 . "\n";  # => 1
}
print 3.0/2.1 . "\n";    # => 1.42857142857143
83

int(x+.5)は、値を最も近い整数に丸めます。切り上げは困難です。

ゼロに丸めるには:

int($x)

以下のソリューションの場合、次のステートメントを含めます。

_use POSIX;_

切り捨てるには:POSIX::floor($x)

切り上げるには:POSIX::ceil($x)

ゼロから四捨五入するには:POSIX::floor($x) - int($x) + POSIX::ceil($x)

最も近い整数に四捨五入するには:POSIX::floor($x+.5)

int($x+.5)は、負の値ではひどく失敗することに注意してください。 int(-2.1+.5)int(-1.6)であり、-1です。

5
Steve Schaefer

あなたはできる:

use integer;

michael Ratanapinthaが説明するか、手動で使用します。

$a=3.7;
$b=2.1;

$c=int(int($a)/int($b));

「int」はキャストしていません。これは、数値を整数形式に変換するための関数です。これは、Perl 5には個別の整数除算がないためです。例外は、「整数を使用する」場合です。その後、本当の分裂を失います。

4
Znik

うまくいけばいい

int(9/4)= 2。

ありがとうマノジュクマール

0
Manoj Kumar