在Perl代码中比较十进制前的整数值

时间:2018-08-03 12:23:30

标签: perl

输入      当A,B,C分别是:      A = 27.629999      B = 29.709202      C = -0.070

 Then output need to be:
 **it should not print anything as 27(=A) matches with {B+ (B*C)} =27 or 
(val2+ val3)= 27

下面是我使用abs在十进制之前获取整数值的代码,但它采用的是像27.8978而不是27这样的完整整数

#!/tools/xgs/perl/5.8.5/bin/perl -w
#!/usr/bin/perl

    use strict;
    use warnings;


          my $val1 = abs($A) ;
          my $val2 = $B ;
          my $val3 = $val2 * ($C) ;
          my $val4 = abs ($val2 + $val3) ;

          if ($val1 ne $val4)
   {
        print " $val1 not equal to $val4\n";
    }


******************************
 Input
 when A, B, C are this:
 A = 27.629999
 B =  29.709202
 C = -0.070

 Then output need to be:
 **it should not print anything as 27(=A) matches with {B+ (B*C)} =27 or 
(val2+ val3)= 27

 Mean to say while comparing it should consider the integer before decimal.

 when A,B,C are this:
 A= 27.56
 B= 25.678
 C= 0

 output in this case:
 A (27) is not matching with {B+(B*C)} = 25+(25*0) =25

2 个答案:

答案 0 :(得分:3)

您一直在使用abs()

  

绝对值

     

绝对

     

返回其参数的绝对值。如果省略VALUE,则使用$_

abs()基本上从数字中删除减号。传递它-27.8978,它将返回27.8978。将其传递给27.8978,它将为您带来相同的价值。更改数字的大小没有任何作用。

听起来像您要int()

  

int EXPR

     

int

     

返回EXPR的整数部分。如果省略EXPR,则使用$ _

我认为您对定义感到困惑。你说:

  

我已经使用abs取小数点前的整数值,但它采用的是27.8978而不是27的完整整数

整数是整数。它只是小数点前的数字部分。 27.8978不是 一个“整数”,它是一个浮点数(也称为实数)。

答案 1 :(得分:2)

您使用了错误的功能abs()并没有达到您的预期。 abs()将负数转换为正数。您需要int()删除小数点后的数字部分。