Path: ...!2.eu.feeder.erje.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!cleanfeed2-b.proxad.net!nnrp1-2.free.fr!not-for-mail Subject: Re: Arrondir un nombre Newsgroups: fr.comp.lang.perl References: <63fa4ea3$0$3076$426a74cc@news.free.fr> From: kurtz le pirate Organization: Compagnie de la Banquise Date: Sun, 26 Feb 2023 15:50:17 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: fr Content-Transfer-Encoding: 8bit Lines: 43 Message-ID: <63fb71b1$0$25940$426a74cc@news.free.fr> NNTP-Posting-Date: 26 Feb 2023 15:50:25 CET NNTP-Posting-Host: 90.107.43.253 X-Trace: 1677423025 news-3.free.fr 25940 90.107.43.253:49976 X-Complaints-To: abuse@proxad.net Bytes: 1956 On 25/02/2023 22:52, Marc SCHAEFER wrote: > kurtz le pirate wrote: >> Comme j'ai de gros fichiers à traiter (100/120Mo de nombres), je ne me >> demande si sprintf est suffisament rapide. > > Probablement, sinon il y a aussi le module POSIX avec les fonctions du C > ceil, floor, etc. > >> Des idées ? > > Ou des magouilles comme int(nombre * 100) / 100 > > Ou encore int($num + 0.99); > En fait oui, j'ai fait quelques tests et sprintf est bien suffisant. Comparaison des temps avec le nearest de Math::Round; 100 numbers sprintf -> 0.000081 nearest -> 0.000092 1000 numbers sprintf -> 0.000489 nearest -> 0.000859 10000 numbers sprintf -> 0.004879 nearest -> 0.008612 100000 numbers sprintf -> 0.050027 nearest -> 0.086946 1000000 numbers sprintf -> 0.490112 nearest -> 0.865844 10000000 numbers sprintf -> 4.948705 nearest -> 8.717012 -- kurtz le pirate compagnie de la banquise