当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我应该如何在Perl中进行整数除法?》经验,为你挑选了3个好方法。

在Perl中总是进行整数除法的好方法是什么?

例如,我想:

real / int = int

int / real = int

int / int = int

Michael Rata.. 83

词法范围的integerpragma强制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.



1> Michael Rata..:

词法范围的integerpragma强制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



2> Bryan Denny..:

你可以用Perl强制转换:

int(5/1.5) = 3;


是的,但是整数除法将是int(5)/ int(1.5).否则,你只是围绕真正的分裂.
但int(5)/ int(1.5)!= int
这是完全错误的,因为通过intiger除法,我们完全丢弃了点之后的所有数字.然后使用int math 5/1.5是5/1 eq 5而不是3,如本例所示.当我们向上/向下舍入数字时,这是错误的,然后5/1.5是5/2 eq 2.5 => 3,但它偶然等于int(5/1.5).这不是规则.
对不起,这就是我真正要求的.在进行任何划分之后,我想要一个int结果.所以是的,我一直在寻找四舍五入.
注意浮点舍入问题:int(-6.725 / 0.025)为-268,POSIX :: floor(-6.725 / 0.025)为-269 [请参见perldoc](http://perldoc.perl.org/functions /int.html)

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.


不,"int"向零舍入,而正常向着向右舍入.运行`perl -le'printf"int(%s)是%d,round(%s)是%.0f; \n",($ _ + 0.5)x4代表-10..10'`你会看到像int(-3.5)这样的东西是-3,round(-3.5)是-4; int(-2.5)为-2,round(-2.5)为-2; int(-1.5)为-1,round(-1.5)为-2; int(-0.5)为0,round(-0.5)为-0; int(0.5)为0,round(0.5)为0; int(1.5)为1,round(1.5)为2; int(2.5)为2,round(2.5)为2; int(3.5)为3,round(3.5)为4; int(4.5)为4,round(4.5)为4;
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有