什么是在 Perl 中始终进行整数除法的好方法?
例如,我想要:
real / int = int
int / real = int
int / int = int
什么是在 Perl 中始终进行整数除法的好方法?
例如,我想要:
real / int = int
int / real = int
int / int = int
这个问题至少有两个合理的答案。(我最初只给出了答案 2。)
使用该int()
函数将浮点计算结果截断为整数(丢弃小数部分),正如 Bryan 在他的自我回答中所建议的:#539805
使用use integer
pragma使 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(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 没有单独的整数除法。例外是当您“使用整数”时。那么你将失去真正的分裂。
希望它有效
整数(9/4)= 2。
谢谢 Manojkumar
整数除法 $x 除以 $y ...
$z = -1 & $x / $y
它是如何工作的?
$x / $y
返回浮点除法
&
执行按位与
-1
代表
&HFFFFFFFF
对于最大的整数...从哪里来
$z = -1 & $x / $y
给出整数除法 ...
例如 9 / 4 = 2.25
整数(9)/整数(4)= 2
9 / 4 - 余数 / 分母 = 2
9 /4 - 9 % 4 / 4 = 2