在Perl中总是进行整数除法的好方法是什么?
例如,我想:
real / int = int int / real = int int / int = int
Michael Rata.. 83
词法范围的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
Bryan Denny.. 44
你可以用Perl强制转换:
int(5/1.5) = 3;
是的,但是整数除法将是int(5)/ int(1.5).否则,你只是围绕真正的分裂. (7认同)
但int(5)/ int(1.5)!= int (6认同)
这是完全错误的,因为通过intiger除法,我们完全丢弃了点之后的所有数字.然后使用int math 5/1.5是5/1 eq 5而不是3,如本例所示.当我们向上/向下舍入数字时,这是错误的,然后5/1.5是5/2 eq 2.5 => 3,但它偶然等于int(5/1.5).这不是规则. (5认同)
对不起,这就是我真正要求的.在进行任何划分之后,我想要一个int结果.所以是的,我一直在寻找四舍五入. (4认同)
注意浮点舍入问题:int(-6.725 / 0.025)为-268,POSIX :: floor(-6.725 / 0.025)为-269 [请参见perldoc](http://perldoc.perl.org/functions /int.html) (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是-1.
词法范围的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
你可以用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是-1.