2013-10-31 71 views
0

我正在寫一個程序,我需要式的散列,其中鍵是一個用戶定義的範圍之間,並且增加在每個步驟是特定的增量。這可以很好地處理1,2等值。但是,當我引入0.1,0.01等浮點數時,舍入誤差會累積並且鍵不會以我想要的方式填充。的Perl:固定浮點增量方向

這本我用在一分鐘代碼:

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

     $hash{$increm} = 0; 

} 

默認:

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

,但我需要允許十進制值作爲上述規定。任何想法如何我可以解決這個問題,所以哈希填充密鑰正確? (該鍵的值並不重要,在這一點上)

謝謝!

回答

4

你可以使用sprintf圓鍵,或者通過一個整數遞增,然後調整使用避免積累。

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