Re: Un while() de perl
Muy curioso... se trata de un problema de precisión....
#!/usr/bin/perl
my $num = shift(@ARGV);
while ( (1.1-$num) > 0 ) {
print ("\$num vale $num\n");
$num = $num + 0.1;
print ("y después $num");
print "(";
print 1.1-$num;
print ")\n";
}
$ numtest.pl 0.8
$num vale 0.8
y después 0.9(0.2)
$num vale 0.9
y después 1(0.1)
$num vale 1
y después 1.1(0)
jfs@hades:/tmp$ numtest.pl 0.7
$num vale 0.7
y después 0.8(0.3)
$num vale 0.8
y después 0.9(0.2)
$num vale 0.9
y después 1(0.1)
$num vale 1
y después 1.1(2.22044604925031e-16) <<<<<<<<< en lugar de 0
$num vale 1.1
y después 1.2(-0.0999999999999999)
¿Alguien está en alguna lista de PERL? Si es así, que por favor
envie ésto y a ver si nos aclara la duda.
Javi
On Wed, Aug 02, 2000 at 04:23:55PM +0200, Hue-Bond wrote:
> Oh vaya! Si inicializamos $num a 0.7 resulta que cuando llega a
> 1.1, la condición del while sigue siendo cierta!. perl_5.005.03-6.
Reply to: