Perl:修复浮点增量

时间:2013-10-31 19:12:29

标签: perl hash floating-point

我正在编写一个程序,我需要在其中设置一个哈希,其中键位于用户定义的范围之间,并且每个步骤的增量都是特定的增量。这适用于诸如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

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

谢谢!

1 个答案:

答案 0 :(得分:4)

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

for (my $j = $start/$by; $j <= $last/$by; ++$j) {
   my $i = $j*$by;
   ...
}