Newsgroup: it.comp.programmare
Titolo: conversione euro -> lire

Cari amici :
Devo modificare un mio vecchio programma Clipper da un cliente in modo che
esso scriva gli importi in euro e venga fatta la conversione automatica in
Lire, come prescrive la normativa di transizione che scatta dal 1 gennaio
2002 fino al fatidico 28 Febbraio 2002 quando si farà tutto esclusivamente
in Euro. Il problema sta in questi termini... Es:
un prezzo che egli inserisce di  L. 11.900  equivale a 6.15 euro.  Adesso se
lui scrive 6.15 euro il corrispondente in euro
è di 11.908 Lire il ché non mi sembra affatto corretto. Voi come avete
risolto il problema... esiste un coefficente o qualche trucco per fare
questo.
Grazie
Enio Donci


semplice:
nel db tieni la valuta in lire, e fai la conversione a runtime per l'euro.
cioè euro=lire/1936,27
CIAO

questo.
Un "trucco" puo' essere quello di scrivere l'importo E ANCHE l'importo
arrotondato. Immagazzini la differenza in una variabile globale e ogni
volta sommi all'importo arrotondato, prima di arrotondarlo, il numero.
	GLOB = 0
	* Arrotonda alle 100 lire piu' vicine
	GRAN = 100
	per tutto il giorno:
	EURO = 6.15
	LIRE = INT(EURO * 1936.27)
	* E questo e' 11908
	ARRO = INT ( ( LIRE + GLOB ) / GRAN + 0.5 ) * GRAN
	* E questo e' 11900
	GLOB = LIRE - ARRO
	* E questo e' 8.
	* Incassi cosi' 11900 lire, e ci "rimetti" 8 lire.
 
	? EURO
	? LIRE
	? ARRO
Dopo sei giri del ciclo, GLOB vale 48 e 11956 lire viene arrotondato a
12000, e dopo aver incassato 48 lire in meno, incassi 100 lire in piu'
(poi ci saranno altri sei giri a vuoto, ed incasserai altre 48 lire in
meno; alla fine di questo superciclo, guadagni 100, e perdi 96, e GLOB
vale 4).
Alla fine della giornata, la differenza fra incasso in lire ed incasso
in euro non superera' GRAN/2 lire in piu' o in meno. Se GRAN=100: 50.
Rimane il problema tecnico di spiegare al cliente perche' paghi 6 paia
di calzini 11900 e il settimo paio 12000 - in realta', lui paga sempre
e comunque 6.15 euro al paio (stiamo ANDANDO verso l'euro).
Leonardo
-- 
".signature": bad command or file name

cioč euro=lire/1936,27
Parafrasando: "Semplice. Ignori la normativa." :-)))


 Parafrasando: "Semplice. Ignori la normativa." :-)))
perchč ?
il ministero afferma che l'arrotondamento va fatto a 2 cifre decimali,
facendo euro=lire/1936,27 si hanno + cifre decimali che le arrotondo a
runtime con una format(ValoreEuro,"##,##0.00")
salvando sul db solo il valore in lire non ho problemi di discrepanza tra
arrotondamenti perchč la lira ha un grado di precisione maggiore dell'euro
quindi il passaggio lira->euro č sicuramente corretto perchč
1000 lire = 0,52 euro mentre 0.52 euro possono essere da 999 lire a 1018
lire
cosa ne pensi ?
CIAO

 questo.
Supponendo che nel database dovranno essere inseriti i valori
in euro (anche come numeri interi, a virgola fissa),
allora ho qui una soluzione:
< set €=euro, £=lire >
Dato che l'errore di arrotondamento sarà al più di €0,005,
equivalenti a £9,68135 potresti approssimare tutte le conversioni
euro -> lire alle £20 o alle £50;
es.:
 SENS=20; ( SENS>=20 )
 ARROT(x) = arrotondamento classico = INT(x+0,5);
 
 £11900 -€-> ARROT(6,145837) = €6,15
 €6,15 -£-> ARROT(11908,06 / SENS) * SENS = £11900
i valori visualizzati in lire saranno "filtrati" da questa
funzione: INT( x / SENS + 0,5 ) * SENS
dove x è il valore in euro.
(evidentemente quando hanno stabilito che bastavano 2 cifre
decimali hanno tenuto conto del fatto che le monete da £10
non vanno più in giro...)
=====
Se invece non vuoi perdere nemmeno una lira, allora devi commettere
un errore di conversione inferiore a £0,5 , perché l'altro £0,5 è
del successivo arrotondamento;
£0,5 = €0.0002582
da qui si vede che ti servono almeno 4 cifre decimali per i
valori in euro, in modo da poterli riconvertire in lire senza
errore.
La soluzione a questo secondo problema sembra pertanto quella di
prevedere nel database i valori in euro con una precisione fino
a 4 cifre decimali (da aggiustare prima di ogni visualizzazione,
sia in euro che in lire).
Il fatto poi che il valore in euro potrebbe essere ottenuto da
un valore in lire, mi porta a pensare che si debba considerare
anche l'errore della prima conversione...
bah, vi lascio con il dubbio.
-- 
Teòria

leggi il mio post di risposta a Leonardo Serni.
CIAO
"Teoria" <teo...@katamail.c-ond-om> ha scritto nel messaggio
news:9ton96$265$1...@localhost.localdomain...


cosa ne pensi ?
Che matematicamente hai ragione, come tu ed io sappiamo. In realta' secondo
la legge devi semplicemente immagazzinare Euro con un numero sufficiente di
decimali. Per l'Italia, mi pare sei. Poi usi internamente quei valori. Alla
fine, arrotondi su due decimali quando devi fornire una cifra all'esterno.
Quindi PUO' succedere di avere
	0.50 +		(in realta' 0.54)
	0.50 +		(" ")
	0.50 =		(" ")
	1.51		(in realta' 1.512)
Del resto, anche adesso per i versamenti fiscali in lire, uno calcola PRIMA
il totale con la precisione massima, POI arrotonda. E tre versamenti da 400
non sono considerati 0+0+0=0, ma 0+0+0=1 :-)


 wrote in message
lrdL7.7971$4M2.1...@news2.tin.it...


0£(per difetto)...
è questo il motivo per cui credo che ci fregheranno un sacco di
soldi.....
ho fatto anche io un piccolo euroconvertitore (tanto per divertirmi
con le swing) il risultato è che se faccio una doppia conversione
(come in questo caso) il risultato non quadra......anche se
l'arrotondamento matematicamente è corretto
il 3 gennaio qualcuno andrà a fare la spesa.....il prezzo è in
euro.....paga in lire, e riceve il resto in euro.....
quanti soldi ci fregheranno