[Tech] mi sfugge il perl

Marco Messini marco@emmeti.it
Ven 6 Mar 2009 11:15:06 CET


paolo palmerini ha scritto:
> mi scuso in anticipo, è sicuramente una domanda scema, ma chi avesse
> compassione di un poveraccio che non riesce a vedere la luce accesa
> davanti al suo naso, potrebbe aiutarmi  capire perchè questo pezzetto di
> codice perl:
>
> ---------------------------------------------------------------------------------
> #!/usr/bin/perl
>
> $a = 1.1;
> $b = 0.1;
> $diff = 1.;
> $sum  = 1.2;
>
> $c = $a + $b;
>
> if ($sum != $c) {
>         print "Sum error: $c != $sum\n";
> } else {
>         print "Sum is ok\n";
> }
>
> $c = $a - $b;
>
> if ($diff != $c) {
>         print "Difference error: $c != $diff\n";
> } else {
>         print "Difference is ok\n";
> }
> ----------------------------------------------------------------------------------
>
> mi da questo risultato:
>
> [paolo@pondy] ./p.pl
> Sum error: 1.2 != 1.2
> Difference is ok
> [paolo@pondy]
>
>
>   
La matemaica 'è' un'opinione :)

prova a sostituire
 printf "Sum error: $c != $sum\n";
con
 printf "Sum error: %.20f != %.20f\n", $c, $sum;

e ti si aprirà un mondo.


ps:
---------------------------------------------------------------
#!/usr/bin/perl

$a = sprintf "%.1f",1.1;
$b = sprintf "%.1f",0.1;
$diff = sprintf "%.1f",1.;
$sum = sprintf "%.1f",1.2;

$c = sprintf "%.1f",$a + $b;

if ($c != $sum) {
        printf "Sum error: %.20f != %.20f\n", $c, $sum;
} else {
        print "Sum is ok\n";
}      

$c = $a - $b;

if ($diff != $c) {
        print "Difference error: $c != $diff\n";
} else {
        print "Difference is ok\n";
}      
--------------------------------------------------------------------
[marco@marco ~]$ ./p.pl
Sum is ok
Difference is ok


-- 
AVVERTENZE AI SENSI DEL DLGS 196/2003 
http://www.emmeti.it/Contact/privacy.it.html



Maggiori informazioni sulla lista flug-tech