[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: