始终在Perl中执行整数除法的好方法是什么?
例如,我想:
real / int = int
int / real = int
int / int = int
答案 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