我正在编写一个程序,我需要在其中设置一个哈希,其中键位于用户定义的范围之间,并且每个步骤的增量都是特定的增量。这适用于诸如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
但我需要允许上面指定的十进制值。任何想法我如何解决这个问题,以便哈希正确填充键? (此时键的值不重要)
谢谢!
答案 0 :(得分:4)
您可以使用sprintf
对键进行舍入,或者通过递增整数然后调整来避免累积。
for (my $j = $start/$by; $j <= $last/$by; ++$j) {
my $i = $j*$by;
...
}