always Perlで整数除算を行う良い方法は何ですか?
たとえば、私は欲しい:
real / int = int
int / real = int
int / int = int
Perlでintをキャストできます。
int(5/1.5) = 3;
字句的にスコープされた 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
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。
ありがとうマノジュクマール