erlug
[Top] [All Lists]

Re: [Erlug] Perl bug nella Debian?

To: erlug@xxxxxxxxxxxxxx
Subject: Re: [Erlug] Perl bug nella Debian?
From: Maurizio Lemmo - Tannoiser <tannoiser@xxxxxxxxxxx>
Date: Tue, 21 Dec 2004 11:13:32 +0100
* martedì 21 dicembre 2004, alle 10:43, Nando Santagata scrive:
> Un passo indietro: in tutti i libri sul Perl, e in particolare sul
> Cookbook, viene indicato come metodo di arrotondamento di un numero in
> floating point questa sintassi:
> 
> $round = sprintf "%.2", $number;

Non manca una "f" dopo il 2?

mizio@hal:~$ perl -e 'print sprintf("%.2", 1.004), "\n"'
%.2
mizio@hal:~$ perl -e 'print sprintf("%.2f", 1.004), "\n"'
1.00

;)

> per un arrotondamento a due decimali, ad esempio.
> 
> Ho verificato sulle macchine che ho a disposizione che:
> 
> perl -e 'print sprintf("%.2", 1.004), "\n"'
> 1.00
> perl -e 'print sprintf("%.2", 1.005), "\n"'
> 1.00
> perl -e 'print sprintf("%.2", 1.006), "\n"'
> 1.01
> 
> Detto questo, il bug puo` essere del gcc, della libc, del perl o di
> chissa` cos'altro.

Pare proprio un baco di glibc, visto che con una precision diversa, si
comporta come "ci aspettiamo":

mizio@hal:~$ perl -e 'print sprintf("%.3f", 1.0051), "\n"'
1.005
mizio@hal:~$ perl -e 'print sprintf("%.3f", 1.0055), "\n"'
1.006

Sarebbe interessante sapere su altre distribuzioni, cosa succede, per
capire se e` deb-related (ma tenderei a dire che e` global).

-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG http://erlug.linux.it
-------------------------------------------------------------------------------
Jayne: I needed to find some tape.
Simon: So you had to tear my infirmary apart?
Jayne: Apparently.
        -- Jaynestown

<Prev in Thread] Current Thread [Next in Thread>