Newsgroup: it.comp.lang.perl
Titolo: piccolo problema su arrotondamento

 $numero = POSIX::floor($numero+0.5);
Purtroppo floor() arrotonda all'intero inferiore, non al piu' vicino :)
Io proporrei di rimandare Claudio alla FAQ corrispondente, in perlfaq4
"Does Perl have a round() function?", ovvero 'perldoc -q round'.
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

Maurizio M. Munafo` scripsit:
: > $numero = POSIX::floor($numero+0.5);
: 
: Purtroppo floor() arrotonda all'intero inferiore, non al piu' vicino :)
E infatti io ho sommato 0.5 a $numero :-)
ciao, .mau.

 ha scritto nel messaggio
news:95r4lq$j27$1...@beatles.cselt.it...

e infatti te hai fatto quello che ho fatto io!! :-)
con la differenza che se sommi 0.5 anzichč 0.49
il numero 5.5 viene arrotondato a 6 e non č giusto!!
e poi finchč andiamo sugli interi ok!!
io ad esempio devo gestire in un programma dei valori in euro!! e quindi
come faccio? eh eh
vado a vedere la faq di cui mi ha parlato Maurizio M.Munafň
bye bye

Claudio Bellucci scripsit:
: con la differenza che se sommi 0.5 anzichč 0.49
: il numero 5.5 viene arrotondato a 6 e non č giusto!!
Le norme ISO dicono che i numeri che finiscono in .5 devono essere
arrotondati all'intero superiore.
In banca mi pare debbano invece fare il controllo sull'ultima cifra intera,
e se e` pari arrotondare per eccesso mentre se e` dispari arrotondare per
difetto. In questo caso devi fare un controllo in precedenza.
: e poi finchč andiamo sugli interi ok!!
: io ad esempio devo gestire in un programma dei valori in euro!! e quindi
: come faccio? 
lavori in centesimi e poi dividi per 100. Non vedo il problema.
.mau.

 dei valori in euro!! e quindi come faccio? 
  Nota a margine: i calcoli in Euro, se hanno valenza legale, devono
essere effettuati, per legge, con una precisione di quattro cifre
decimali ed i risultati arrotondati a due cifre decimali, seguendo,
immagino, la convenzione contabile, che prevede l'arrotondamento
all'ordine superiore solo quando la cifra e` uguale o maggiore di sette.
  Consiglio vivamente l'uso della virgola fissa (come, d'altronde, si
effettua gia` in altri ambienti devoluti al calcolo finanziario, come il
Visual Basic o il Cobol) ed una procedura di arrotondamento ad hoc.
  Sul come implementare in Perl l'aritmetica in virgola fissa ipotizzo
che qualche informazione possa essere recepita anche nella
documentazione in linea distribuita con l'ambiente di sviluppo, in
particolare per quanto riguarda /substr/ e la dichiarazione /int/.
  Infine, non escludo che il CPAN contenga qualcosa di utile:
 
http://www.cpan.org
	Alla prossima,
		Marco

 difetto. In questo caso devi fare un controllo in precedenza.
comunque ho trovato che la funzione sprintf("%.2f",$numero) può andare bene!
Thanks




Hai ragione. Che distrattone che sono! :)


 viene arrotondato a 6 e non č giusto!! e poi finchč andiamo


comunque ho trovato che la funzione sprintf("%.2f",$numero) può andare bene!
Attento che arrotonda come dicono le faq e non basandosi su .5.
$ perl -e 'printf("%.2f\n",1.225)'
1.23
$ perl -e 'printf("%.2f\n",1.325)'
1.32
-- 
giu...@pobox.com

Visual Basic o il Cobol) ed una procedura di arrotondamento ad hoc.
 ^^^^^^^^^^^^
Visual Basic e' devoluto al calcolo finanziario?
Saluti
       \||/
--oOOo--@ @--oOOo--
Squa
kra...@libero.it.CUT.TH.IS
http://www.poli.studenti.to.it/~s93146/
"per aspera ad astra"

 Visual Basic e' devoluto al calcolo finanziario?
  Nel bene o nel male, si`. ;)
	Alla prossima,
		Marco