我应该如何在Perl中进行整数除法?

时间:2009-02-12 02:44:21

标签: perl integer-division

始终在Perl中执行整数除法的好方法是什么?

例如,我想:

real / int = int

int / real = int

int / int = int

7 个答案:

答案 0 :(得分:80)

词法范围integer pragma强制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

答案 1 :(得分:40)

你可以在Perl中强制转换:

int(5/1.5) = 3;

答案 2 :(得分:5)

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。

答案 3 :(得分:3)

你可以:

use integer;

由Michael Ratanapintha解释或者手动使用:

$a=3.7;
$b=2.1;

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

注意,'int'不是强制转换。这是将数字转换为整数形式的函数。 这是因为Perl 5没有单独的整数除法。例外是你使用整数'。那么你将失去真正的分裂。

答案 4 :(得分:0)

希望它有效

int(9/4)= 2。

由于 Manojkumar

答案 5 :(得分:0)

整数除以$ x除以$ y ...

$z = -1 & $x / $y

它如何工作?

$x / $y

返回浮点除法

&

执行按位与

-1

代表

&HFFFFFFFF

表示最大整数...来源

$z = -1 & $x / $y

给出整数除法...

答案 6 :(得分:-2)

例如 9/4 = 2.25

int(9)/ int(4)= 2

9/4 - 余额/拒绝者= 2

9/4 - 9%4/4 = 2