Newsgroup: it.comp.lang.vo-clipper
Titolo: Conversione da Lire ad Euro

Per chi lo ha chiesto e per chi ancora non lo sapesse, le regole di
conversione in Euro e di arrotondamento si basano su disposizioni
generali, comunitarie e nazionali, che sono pertanto inderogabili.
Tali disposizioni si applicano sia per le conversioni da effettuare
nella fase transitoria, sia ai fini della ridenominazione complessiva
degli importi da attuarsi in vista del passaggio definitivo alla
moneta unica del 1 gennaio 2002.
La conversione degli importi si effettua dividendo la cifra espressa
in Lire per il tasso di conversione 1 Euro = 1936,27.
Il valore così ottenuto deve essere arrotondato al secondo decimale,
tenendo conto del valore del terzo decimale;
se il terzo decimale è inferiore a 5, si arrotonda per difetto, 
se è superiore o uguale a 5, si arrotonda per eccesso.
CALCOLI INTERMEDI
La regola dell'arrotondamento al secondo decimale è inderogabile,
salvo l'unica eccezione prevista per i cosidetti calcoli intermedi,
nei quali è invece consentito l'uso di più cifre decimali.
La possibilità di impiegare più decimali nasce dall'esigenza di
evitare le distorsioni provocate dall'applicazione dell'arrotondamento
limitato al centesimo di Euro nella conversione di importi in Lire
molto contenuti.
Infatti, quando gli importi in Lire sono di ammontare modesto,
l'applicazione delle regole comunitarie di conversione e di
arrotondamento produce risultati poco precisi:
così, ad esempio, nel caso di un importo di Lire 85, la sua
espressione in centesimi di Euro condurrebbe ad uno scostamento di
circa il 10% del valore tra l'importo originario espresso in Lire e
quello espresso in Euro.
A tal fine il D.lgs. 213/98, agli artt. 3 e 4, ha previsto apposite
regole di arrotondamento, consentendo l'utilizzo di almeno:
a) cinque cifre decimali per gli importi originariamente espressi in
unità di Lire;
b) quattro cifre decimali per gli importi originariamente espressi in
decine di Lire;
c) tre cifre decimali per gli importi originariamente espressi in
centinaia di Lire;
d) due cifre decimali per gli importi originariamente espressi in
migliaia di Lire.
Perchè possa parlarsi di calcolo intermedio occorre che si tratti di
un importo che non deve essere autonomamente pagato o contabilizzato;
al contrario, qualora l'importo vada autonomamente contabilizzato o
rappresenti un pagamento, non può comunque considerarsi calcolo
intermedio, e non è dunque possibile operare con un numero di decimali
superiore a due, coincidente con l'unità divisionale minima della
nuova moneta.
Per ogni ulteriore chiarimento, visitare 
www.tesoro.it
ciao

 se č superiore o uguale a 5, si arrotonda per eccesso.
Ottimo. Allora si puň utilizzare la funzione di arrotondamento semplice.
A proposito: con Marco Boschi abbiamo fatto delle prove dalle quali č
risultato che la ROUND() del Clipper 5.3 non presenta il problema di
arrotondamento di quella del 5.2. Quindi chi usa quello puň stare
tranquillo. Da parte mia proverň a prendere l'OBJ dalla libreria del 5.3
e a linkarla alla mia applicazione. Anzi, aspettate che provo subito...
niente da fare, non ci si riesce. Se qualcun'altro vuole provare...
EMG
EMAG Software Homepage:     
http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: 
http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: 
http://www.emagsoftware.it/tbosg

 Per chi lo ha chiesto e per chi ancora non lo sapesse [cutted]

niente da fare, non ci si riesce. Se qualcun'altro vuole provare...
Non ho capito come fai ... comunque dopo me lo spieghi, che lo faccio
anche io :))
Ciao.Alberto.
-------------------------------------------------------------
Alberto Rubinelli           Mail : 
alb...@retrocomputing.net
A2 SISTEMI                  Http : 
www.retrocomputing.net
Via Costantino Perazzi 22   Tel 0321 640149
28100 NOVARA (NO) - ITALY   Fax 0321 391769
ICQ : 49872318              Odigo : 5269083

niente da fare, non ci si riesce. Se qualcun'altro vuole provare...
Clipper 5.2 usa per il floating point la libreria Fast Alternate Math
del compilatore M$ 5.1.  La FastMath e' una libreria che NON utilizza
il coprocessore matematico, e che risulta piu' veloce della classica
libreria con emulatore quando il coprocessore non e' presente,
(all'epoca erano pochi i pc equipaggiati di coprocessore).
La versione 5.3 di Clipper utilizza la libreria con emulazione, per la
precisione quella fornita con la versione 8 del compilatore di M$.
Ovviamente le due librerie sono totalmente incompatibili.
ciao, acc.   
a...@libero.it

 anche io :))
Prendi uno strumento tipo TLIB.EXE della Borland (ma ho visto che non
funziona con la CLIPPER.LIB del 5.3) oppure LIB.EXE della Microsoft. Con
quello puoi vedere il contenuto della libreria
LIB clipper, clipper.lst (e poi ti guardi il file CLIPPER.LST prodotto)
ed estrarre il modulo che contiene la funzione ROUND()
LIB clipper *ops (e ottieni OPS.OBJ)


 Ovviamente le due librerie sono totalmente incompatibili.
Me ne sono accorto... :-(
