gpt4 book ai didi

perl - 比较两个十进制值与perl中的特定范围

转载 作者:行者123 更新时间:2023-12-02 06:56:36 24 4
gpt4 key购买 nike

我是 Perl 新手。我有两组不同的数组。这两个具有十进制值的数组,都没有完全匹配,可能只有 +0.5-0.5 不同。我试过这个程序,它不工作。

@inpt = qw(1003.3965 1036.4392 1037.3843 1045.4459 1101.4259 1107.4253 1118.3928 1191.4904 1320.4855 1420.6291 1440.6921 1562.6698 1742.7587 2084.9137 2248.8761 2337.8865 2628.9931);
@outpt = qw(1191.6017 1101.5336 2629.2865 1742.9336 1036.5726 2338.1574 2249.1057 1440.8222 1440.2074);

foreach $s (@outpt){

$inc = $s + 0.5;
$dec = $s - 0.5;

foreach $p ( @inpt ) {
if ( $p .. $inc ) {
print "$p \t $inc";
}
elsif ( $p .. $dec ) {
print "$p \t $dec";
}
}
}

我期待下面的输出。 1191.6017@outpt值与@中的+0.5-0.5范围匹配1191.4904 的 inpt 值。

outpt          inpt
1191.6017 1191.4904
1101.5336 1101.4259
2629.2865 2628.9931
1742.9336 1742.7587
1036.5726 1037.3843
2338.1574 2337.8865
2249.1057 2248.8761
1440.8222 1440.6291
1440.2074 1440.6291

最佳答案

试试这个:

use strict;
use warnings;

my $limit = 0.5;
my $result = "";

my @inpt = qw(1003.3965 1036.4392 1037.3843 1045.4459 1101.4259 1107.4253 1118.3928 1191.4904 1320.4855 1420.6291 1440.6921 1562.6698 1742.7587 2084.9137 2248.8761 2337.8865 2628.9931);
my @outpt = qw(1191.6017 1101.5336 2629.2865 1742.9336 1036.5726 2338.1574 2249.1057 1440.8222 1440.2074);

foreach my $s (@outpt){
foreach my $t (@inpt) {
if($s >= $t - $limit && $s <= $t + $limit) {
$result .= "$s \t $t\n";
}
}
}
print $result;

关于perl - 比较两个十进制值与perl中的特定范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30120238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com