[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