[Tech] mi sfugge il perl

Franco Bagnoli franco.bagnoli@gmail.com
Ven 6 Mar 2009 11:28:17 CET


On Fri, Mar 6, 2009 at 10:29 AM, paolo palmerini <paolo@palmerini.org> wrote:
> 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";
> }
> ----------------------------------------------------------------------------------

è vero che quelli che prendono il dottorato in informatica viaggiano
così in alto da dimenticarsi i fondamentali, ma comunque che la
rappresentazione interna dei dei floating point  sia approssimata lo
dovrebbero sapere tutti,

se provi

#!/usr/bin/perl

$a = 1.1;
$b = 0.1;
$diff = 1.;
$sum  = 1.2;

$c = $a + $b;

printf("%20.18f %20.18f \n",$c,$sum);

ottieni

1.200000000000000178 1.199999999999999956

-- 
Franco Bagnoli <franco.bagnoli@unifi.it> <franco.bagnoli@gmail.com>
Lab. Fisica dei Sistemi Complessi, Dip. Energetica & CSDC
Universita' di Firenze, via S. Marta, 3 I-50139 Firenze, Italy.
Tel. +39 0554796592, fax: +39 0554796342



Maggiori informazioni sulla lista flug-tech