0

我正在编写一个程序,我需要在其中制定一个哈希值,其中键位于用户定义的范围之间,并在每一步增加一个特定的增量。这适用于 1、2 等值。但是当我引入浮点数(例如 0.1、0.01)时,舍入误差会累积,并且键不会以我想要的方式填充。

这是我现在正在使用的代码:

my %hash;
for (my $increm = $lowerbound; $increm <= $upperbound; $increm+=$binsize) {

        $hash{$increm} = 0;

}

默认:

$lowerbound = 1000
$upperbound = 1500
$binsize = 1

但我需要允许上面指定的十进制值。有什么想法可以解决这个问题,以便哈希正确填充键吗?(此时键的值并不重要)

谢谢!

4

1 回答 1

4

您可以使用 对键进行舍入sprintf,或者通过增加一个整数然后调整来避免累积。

for (my $j = $start/$by; $j <= $last/$by; ++$j) {
   my $i = $j*$by;
   ...
}
于 2013-10-31T19:18:31.057 回答