[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