my $a=1;
for(my $j=0;$j<=$a;$j+=0.05){
print "$j/n";
}
for(my $j=1;$j<=10;$j++){
print "$j/n";
}
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
1
2
3
4
5
6
7
8
9
10
居然不能循环到1 ,很奇怪
原因找到:貌似0.05循环时在寄存器里是个近似数,所以和1比起来不相等。
本文通过一个简单的Perl脚本展示了使用浮点数进行循环时遇到的问题,并解释了为什么会出现这种现象。文章指出,在计算机中,浮点数由于其存储方式可能会导致与预期不符的结果。
3184

被折叠的 条评论
为什么被折叠?



