比较变化的大小而不是数字

时间:2013-08-12 18:36:37

标签: perl string-comparison logical-operators

我需要比较列表中代表日志变化幅度的值:

      '1.3118   2.07985',
      '1.18887  0.990066',
      '2.63964  2.31757',
      '0.828566 1.03155',
      '-0.895715    -0.993696',
      '1.24353  1.35931',
      '1.2916   1.03409',
      '-0.747429    -1.18246',
      '1.30936  1.20244',
      '1.40537  1.27763',
      '-1.07762 -0.978337',
      '0.755268 0.837232',
      '0.919512 1.09517',

对于每一行,我想进行比较并存储具有最大变化幅度的值。例如,我目前拥有它(感谢这个问题的帮助Regex value comparison)这个比较:

if ($condition1_match > $condition2_match) {
    push @largest_change, $condition1_match;
}

正确地将-0.895715的值定义为小于-0.993696。但是,我想编写比较,将-0.993696识别为比-0.895715

更高的倍数变化

1 个答案:

答案 0 :(得分:4)

您可以使用绝对值:

if (abs $condition1_match > abs $condition2_match) {
    push @largest_change, $condition1_match;
}

当然,反过来说:

elsif (abs $condition1_match < abs $condition2_match) {
    push @largest_change, $condition2_match;
}