Newsgroup: it.comp.lang.visual-basic
Titolo: (OT?) Arrotondamenti su Euro

Sto scrivendo un controllo di gestione editing di campi in valuta, con
conversione automatica da Lira ad Euro e mi č venuto un dubbio. Non č
propriamente un problema legato al Visual Basic, ma sicuramente l'avete
affrontato anche voi.
Quando si trasformano le Lire in Euro si ottengono risultato con molti
decimali, ma per legge ne vanno tenuti solo 2. Quindi se il valore in Euro
ottenuto č ad esempio <1,0450> si arrotonda al valore inferiore 1,04 e se č
<1,0451> si arrotonda al valore superiore 1,05 (o almeno mi pare, se sbaglio
qualcuno mi corregga).
La domanda č: cosa si fa quando il valore č negativo? Si usa la stessa
logica o la si ribalta? Cioč, <-1,045> diventa -1,05 o -1,04?
Grazie in anticipo
*Roby*

A mio parere la regola viene ribaltata per i negativi....
per quntio riguiarda il numero delle cifre decimali...avrei da eccepire..
2 cifre sono il MINIMO indispensabile ma quello che viene ritenuto
l'OTTIMO e' la quinta cifra decimale ......
poi dipende dal programma ...
da che merce viene trattata etc etc
io per adesso sto usando le tre cifre
ma alcuni clienti me ne hanno richieste 4.....
Una multinazionale famosa ( che purtroppo non e' mia cliente ^_^  ) so' per
certo che ne usa tutte e 5 ....
Ciao
Roberto Piazzolla ha scritto:

--
!------------------------------------------------!
!ICQ     : 8281944
!E-Mail  : 
Dan...@levon.it
!
! " M'accorgo del cielo infinito solo se
!   una rondine ne percorre un tratto. "
!
!HomePage : 
http://www.levon.it/daniele
!
!------------------------------------------------!

 logica o la si ribalta? Cioè, <-1,045> diventa -1,05 o -1,04?
Non ne sono sicuro... ma credo di no...
--
Ciao!
----------------------------------
Nel mio sito (sezione "I Miei Programmi") trovate il
programma FREEWARE AutoQuote! che permette di quotare
i messaggi che non quota Outlook Express.
==================================
Daniele Pinna  Email: 
dap...@lycosmail.com
Nell'indirizzo Email eliminare la parola "OOPS."
Sito Web: Il DoCFa in Pillole: 
http://dapinna.freeweb.org
ICQ UIN: 24567484

 certo che ne usa tutte e 5 ....
Dipende sempre da per che cosa. Certo che con le conversioni tra valute, gli
arrotondamenti dei decimali fanno saltare per aria qualsiasi calcolo di
consolidamento.
Comunque ho risolto il problema e ora il mio controllo accetta in input
anche il numero di decimali per lire ed euro, mantenendo come default
rispettivamente 0 e 2. Adesso si tratta solo di farlo funzionare
correttamente.
8-)
Ciao
*Roby*

 Non ne sono sicuro... ma credo di no...
Su questa cosa non ho ancora le idee chiare.
Ciao
*Roby*


Tutti siamo d'accordo che 1.0447, 1.0448, 1.0449 vadano arrotondati a 1.04
Penso che siamo tutti d'accordo anche che 1.0453, 1.0452, 1.0451 vadano
arrotondati a 1.05
Ora 1.0450 se decidessimo di arrotondarlo a 1.04, per distinguere dal caso
precedente dovremmo andare ad esaminare un'ulteriore cifra, quindi e' piu'
semplice arrotondarlo a 1.05, e penso sia per questo che si sia adottata
questa convenzione.
Per quanto riguarda i numeri negativi si puo' applicare lo stesso identico
ragionamento per cui -1.0450 viene arrotondato a -1.05
E proprio cosi' funziona la Format.
Adesso pero' mi spiegate perche' lo stesso VB ha due comportamenti
differenti per cui Format(1.0450,"#.##") = 1.05 mentre Round(1.0450, 2) =
1.04 ?

 1.04 ?
L'istruzione Round di Visual Basic 6 segue la regola del Banker's rounding.
Arrotonda il 5 alla cifra superiore o inferiore in modo che il risultato sia
comunque pari.
Probabilmente starai pensando che ho detto una stupidaggine, ma ti assicuro
che funziona proprio cosě: Forse in America i banchieri seguono questa
regola. Comunque l'esempio č il seguente:
Round(1.055,2) = 1,06
Round(1.045,2) = 1,04
Ciao
*Roby*