2014-03-03 60 views
2

我想從num + 0.1增加三個麻木3,4,6到num + 0.7所有數字都工作正常,除了3.爲什麼?Perl:增量錯誤

foreach my $num(3,4,6){ 

    for(my $state=$num+0.1;$state<=$num+0.7;$state+=0.1){ 
      print $state."\n"; 
    } 

} 

輸出: enter image description here 這樣下去,即使我硬編碼並打印至3.6。

for(my $state=3;$state<=3.7;$state+=0.1){ 
     print $state."\n"; 
} 
+2

請搜索'[C]在SO浮動compare',大概有這太多的問題。 –

回答

1

使用Math::BigFloat;

這樣的:

#!C:/path/of/perl.exe -w 

use Math::BigFloat ':constant'; 

use warnings; 
use strict; 

foreach my $num(3,4,6) { 

    for(my $state=$num+0.1;$state<=$num+0.7;$state+=0.1){ 
      print $state."\n"; 
    }  
} 

輸出:

3.1 
3.2 
3.3 
3.4 
3.5 
3.6 
3.7 
4.1 
4.2 
4.3 
4.4 
4.5 
4.6 
4.7 
6.1 
6.2 
6.3 
6.4 
6.5 
6.6 
6.7 
1

這裏的另一種選擇:

use strict; 
use warnings; 

for my $num (3, 4, 6) { 
    for my $i (1 .. 7) { 
     print $num + $i/10, "\n"; 
    } 
} 

輸出:

3.1 
3.2 
3.3 
3.4 
3.5 
3.6 
3.7 
4.1 
4.2 
4.3 
4.4 
4.5 
4.6 
4.7 
6.1 
6.2 
6.3 
6.4 
6.5 
6.6 
6.7