Perlで常に整数除算を行うための良い方法は何ですか?
たとえば、次のようにします。
real / int = int
int / real = int
int / int = int
Perlで常に整数除算を行うための良い方法は何ですか?
たとえば、次のようにします。
real / int = int
int / real = int
int / int = int
この質問には少なくとも2つの合理的な答えがあります。(私はもともと答え2だけを与えました。)
ブライアンが自己回答で提案したように、関数を使用しint()
て浮動小数点の計算結果を整数に切り捨てます(小数部分を破棄します):#539805
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
あなたはPerlでintをキャストすることができます:
int(5/1.5) = 3;
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 です。
あなたはできる:
use integer;
Michael Ratanapintha によって説明されているか、手動で使用します。
$a=3.7;
$b=2.1;
$c=int(int($a)/int($b));
「int」はキャストされていないことに注意してください。これは、数値を整数形式に変換する関数です。これは、Perl 5 には個別の整数除算がないためです。例外は、「整数を使用する」場合です。そうすれば、本当の分裂を失うでしょう。
それがうまくいくことを願っています
int(9/4) = 2.
ありがとうマノイクマール
例: 9 / 4 = 2.25
int(9) / int(4) = 2
9 / 4 - 残り / デニネーター = 2
9/4 - 9% 4/4 = 2