Newsgroup: it.comp.lang.vo-clipper
Titolo: ot: calcolo con decimali

Ciao a tutti,
mi capita di dover affrontare un problema che non mi sono mai posto.
Ho un programma di fatturazione che prevede l'uso di prezzi con 2 decimali.
I prezzi sono comprensivi di imposta e quindi il piede fattura lo calcolo
eseguendo lo scorporo.
Ora lo stesso programma deve essere installato presso un cliente che
necessita' piu' di 2 decimali (minimo 3). Qua cominciano i dubbi e la
mancanza di documentazione. Preciso che ho provato nel sito dell'Agenzia
delle entrate ma mi sono perso senza ottenere nulla di significativo.
Se non sbaglio i valori consuntivi (imponibili, iva, totale documento)
devono essere arrotondati alla 2' cifra decimale. Ma i calcoli ?? Se faccio
i calcoli con piu' di 2 cifre (come i prezzi dei singoli articoli), i
calcoli risultano differenti e gli arrotondamenti finali alle 2 cifre danno
un'altra cifra. Non sempre ma succede.
Spero di essere stato chiaro. Per semplificare: come gestite voi i prezzi
con piu' di 2 cifre decimali (3-5) ? Avete documentazione da indicarmi o (se
possibile) routines da condividere ? Mi spiace dover chiedere questo genere
di aiuto, mi sento molto scemo, ma se non lo chiedo a voi ...
Grazie Marco

Io, tranne in casi eccezionali, utilizzo 3 decimali arrotondando il terzo
secondo le regole canoniche, fino a 5 per difetto ed oltre per eccesso.
Il problema è che se tu effettui i calcoli in memoria otterrai dei risultati
diversi secondo il tipo di variabili che utilizzi, rispetto ai calcoli
effettuati su di un archivio. Per evitare incongruenze io effettuo un Round
della cifra estraendo i decimali significanti.
N.B. vado a memoria poichè non scrivo routine di calcolo da un bel po'!
Ciao.
                                                Francesco

Ciao Marco, cerco di rispondere al tuo quesito in base a quanto faccio io.
I prezzi di listino possono avere un numero di decimali variabili, nel mio
caso 5.
Dopo aver applicato il prezzo di listino al quantitativo della merce,
arrotondo il risultato al secondo decimale in base al terzo. Ad esempio se
il risultato fosse
10,055 arrotonderei a 10,06. Questo importo arrotondato al secondo decimale
viene stampato sulla riga di dettaglio della fattura. Il totale della
fattura sarà dato dalla sommatoria dell'importo arrotondato al secondo
decimale di ciascuna riga dettaglio e quindi esso avrà sempre 2 decimali.
Per quanto riguarda l'arrotondamento, stai attento perchè la funzione
Round() del VO 2.5 ed anche quella del Report Pro 3.2 può dare dei problemi
nell'arrotondamento dei numeri Float o Real8.
Anche se ci sono soluzioni molto più cervellotiche al problema, in modo
semplice per ovviare a tutto ciò io faccio in questo modo:
Define Gl_Cr 0.00000001
Round(numero+Gl_Cr,2)
Spero di esserti stato utile.
Ciao
Roberto Cordini

 Spero di essere stato chiaro.
Francamente no. Mi fai un esempio pratico?
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

 ha scritto nel messaggio
news:XmC1c.46964$Kc3.1...@twister2.libero.it...


Ciao,
vorrei ringraziare tutti voi per le spiegazioni. In base alle vostre
indicazioni sto facendo dei tests e finora i risultati sono quelli attesi.
Grazie ancora
Marco Boeri