61

Perlで常に整数除算を行うための良い方法は何ですか?

たとえば、次のようにします。

real / int = int

int / real = int

int / int = int
4

7 に答える 7

89

この質問には少なくとも2つの合理的な答えがあります。(私はもともと答え2だけを与えました。)

  1. ブライアンが自己回答で提案したように、関数を使用しint()て浮動小数点の計算結果を整数に切り捨てます(小数部分を破棄します):#539805

  2. use integerプラグマを使用して、Perlに計算の入力と結果の両方を整数に切り捨てさせます。スコープは{ }ブロック内です。

例:

print 3.0/2.1 . "\n";      # => 1.42857142857143
print 5.0/1.5 . "\n";      # => 3.33333333333333

print int(3.0/2.1) . "\n"; # => 1
print int(5.0/1.5) . "\n"; # => 3

{
  use integer;
  print 3.0/2.1 . "\n";    # => 1
  print 5.0/1.5 . "\n";    # => 5 (because 1.5 was truncated to 1)
}
print 3.0/2.1 . "\n";      # => 1.42857142857143 again
于 2009-02-12T02:49:50.413 に答える
50

あなたはPerlでintをキャストすることができます:

int(5/1.5) = 3;
于 2009-02-12T02:47:59.933 に答える
8

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 です。

于 2009-12-14T20:07:15.733 に答える
4

あなたはできる:

use integer;

Michael Ratanapintha によって説明されているか、手動で使用します。

$a=3.7;
$b=2.1;

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

「int」はキャストされていないことに注意してください。これは、数値を整数形式に変換する関数です。これは、Perl 5 には個別の整数除算がないためです。例外は、「整数を使用する」場合です。そうすれば、本当の分裂を失うでしょう。

于 2013-09-25T09:59:47.023 に答える
0

それがうまくいくことを願っています

int(9/4) = 2.

ありがとうマノイクマール

于 2013-08-06T13:29:06.597 に答える
-2

例: 9 / 4 = 2.25

int(9) / int(4) = 2

9 / 4 - 残り / デニネーター = 2

9/4 - 9% 4/4 = 2

于 2011-05-05T01:54:29.977 に答える