Newsgroup: it.comp.lang.visual-basic
Titolo: Sondaggio: ma voi come arrotondate?

Esistono sostanzialmente due metodi di arrotondamento: sull'unitario o 
sul totale.
Partendo da un importo unitario lordo, una quantitï¿œ, ed uno sconto, 
dobbiamo arrivare a mostrare i due risultati utili, ossia l'importo 
unitario scontato e l'importo totale scontato.
Entrambi questi valori siano arrotondati alla precisione richiesta dal 
cliente (tipicamente, la terza cifra decimale).
Orbene...
Costo unitario 0,56
Sconto 4%
Quantitï¿œ 10.000 pezzi.
Metodo 1) arrotondo sul totale
Totale = 0,56 * 10.000 * 0,96 = 5376,00
Unitario = 5376,00 / 10.000 = 0,538
Metodo 2) arrotondo sull'unitario
Unitario = 0,56 * 0,96 = 0,538
Totale = 0,538 * 10.000 = 5380,00
E' evidente che il secondo metodo ï¿œ piï¿œ coerente con una 
visualizzazione umana (ad esempio, un report).
Ma il primo metodo ï¿œ decisamente piï¿œ preciso (nel secondo caso, 
5380/5600=>sconto 3.93%, non 4% come concordato). Ma uno che veda su un 
report gli importi netti, unitario e totale, penserebbe ad un errore di 
calcolo.
Entro nel merito del caso specifico: noi abbiamo sempre utilizzato il 
metodo 1, dando alla visualizzazione dell'importo unitario un peso 
molto marginale rispetto alla tutela della precisione del totale.
Adesso sorgono comprensibili problemi di coerenza fra documenti, in 
quanto per motivi doganali devono essere dichiarati gli importi 
unitari, che moltiplicati per le quantitï¿œ non quadrano con i totali.
Mi chiedo se siamo gli unici ad avere scelto questa strada, che 
ritenevamo di gran lunga preferibile, anzichï¿œ quella, piï¿œ semplice ma 
meno flessibile, dell'arrotondamento dell'importo unitario...
Alberto
-- 
Friedrich Nietzsche: Un po' di salute ogni tanto ï¿œ il miglior rimedio 
per l'ammalato.

 calcolo.
C'ï¿œ un errore di calcolo, quel 5600 che hai scritto da dove proveniene?
la differenza di sconto non ï¿œ del 0.07% (3.93% contro 4.00%) bensï¿œ dello 
0.004% quindi 3.996% contro 4%
Detto questo, io adotto sempre la seconda soluzione, che per me ï¿œ piï¿œ 
corretta perchï¿œ lo sconto deve essere invariante rispetto alla quantitï¿œ 
ordinata (a meno di scaglioni di sconto), lo sconto quindi lo si applica 
sul costo del singolo pezzo, ï¿œ anche vero che l'arrotondamento introduce 
un errore  (come abbiamo visto non dell'entitï¿œ che hai indicato ma 
notevolmente inferiore) perï¿œ temo si possa solo ridurre l'entitï¿œ 
dell'approssimazione ma non eliminarla.
ciao
stefano

 non eliminarla.
Lo stesso cliente che segnala il 'problema', acquista energia sul 
libero mercato contrattando uno sconto rispetto al kwh di riferimento.
Ad esempio, 1kwh di riferimento = 0.06Euro (ipotesi).
Poi, a seconda delle stagioni e delle fasce orarie, ha diversi sconti 
(ad esempio 3%, 5%, 7%).
Il consumo (quantitï¿œ) ï¿œ ovviamente dell'ordine delle smilionate di 
kwh/mese.
Prova a vedere che scostamenti ci sono sul bilancio ad usare le due 
formule diverse.
0.06 x 10.000.000 = 600.000
600.000 x (1-3%) = 582.000
0.06 x (1-3%) = 0.058
0.058 x 10.000.000 = 580.000
E' vero che parliamo di 2.000Euri su oltre mezzo milione, ma si fa 
fatica a giustificarla con un 'arrotondamento'.
Fra parentesi, il fornitore di energia usa il secondo metodo nella 
fattura, perchï¿œ evidentemente si ï¿œ giï¿œ trovato di fronte al problema. E 
a questo punto invece avremmo una discordanza fra i documenti di 
contabilitï¿œ interna e la fattura ricevuta dal fornitore...
Alberto
-- 
Max Beerbohm: Tutto ciï¿œ che ï¿œ degno di essere fatto ï¿œ stato fatto 
ripetutamente. Dalle cose mai fatte bisognerebbe tenersi, sospetto, 
molto alla larga.

 fattura ricevuta dal fornitore...
Sorry, intendevo dire che il fornitore usa il primo metodo, ossia 
l'arrotondamento sul totale, come ho sempre fatto anche io...
Alberto
-- 
Henry David Thoreau: L'uomo ï¿œ tanto piï¿œ ricco quanto meno costano i 
suoi piaceri.

 contabilitï¿œ interna e la fattura ricevuta dal fornitore...
Sulla provenienza del 5600 ... ho preso un abbaglio, scusa.
Il tuo ragionamento fila ... in parte, rimango dell'idea perï¿œ che 
sarebbe piï¿œ corretta l'applicazione dello sconto sulla singola unitï¿œ, 
quando compri un paio di pantaloni in saldi lo sconto ï¿œ sul pezzo non 
sul totale, e viceversa il ricarico di una merce -che possiamo 
considerare come l'inverso dello sconto- si applica al singolo pezzo e 
non sul totale.
Potremmo azzardare che allora c'ï¿œ un problema "strutturale", e cioï¿œ che 
si usano troppi pochi decimali?
Usando 4 decimali invece di 2 il risultato sarebbe:
Metodo 1) arrotondo sul totale
Totale = 0,5600 * 10.000 * 0,96 = 5376,00
Unitario = 5376,00 / 10.000 = 0,5376
Metodo 2) arrotondo sull'unitario
Unitario = 0,5600 * 0,96 = 0,5376
Totale = 0,5376 * 10.000 = 5376,00
sparita l'approssimazione, ï¿œ sempre in agguato ovvio (per altri calcoli) 
ma con una incidenza 100 volte inferiore.
I campi currency infatti hanno 4 decimali fissi, un motivo ci deve pur 
essere.
ciao
stefano

Stefano Ferrari ha scritto:
[ADDENDUM]
a sostegno della mia tesi sul problema strutturale viene anche la 
matematica.
Nello specifico la proprietï¿œ invariantiva della moltiplicazione, 
invertendo l'ordine dei fattori il risultato non cambia.
stefano

Stefano Ferrari ha pensato forte :

Si, certo, se potessimo stampare un documento, ad esempio una fattura, 
con 10 cifre decimali sull'unitario, il problema sarebbe pressochï¿œ 
risolto.
Ma giï¿œ la gente fatica a concepire importi unitari con 3 cifre decimali 
(che a volte qualcuno li confonde con le migliaia), figuriamoci se 
iniziamo ad andare oltre.
Quindi, il punto risulta un argomento esclusivamente concettuale:
NON ï¿œ possibile mantenere l'assoluta coerenza dei quattro numeri 
(unitario, quantitï¿œ, sconto, totale), con i numeri decimali ossia a 
virgola fissa, e il problema ï¿œ tanto maggiore quanti meno sono i 
decimali a disposizione (tipicamente 2 sul totale e 3 sull'unitario).
Diventa inevitabile qualche incoerenza derivante dagli arrotondamenti.
Io ho sempre 'sacrificato' il costo unitario, visto che il valore piï¿œ 
importante, per me, ï¿œ il totale (che ï¿œ quello che si paga, che si mette 
a bilancio, che 'conta veramente').
Apparentemente, questa visione non ï¿œ universalmente accettata, e c'ï¿œ 
chi preferisce sacrificare il totale (e di conseguenza lo sconto) pur 
di generare numeri coerenti nei documenti (obiettivo del tutto 
rispettabile e comprensibile, lo riconosco).
Alberto
-- 
Alessandro Bergonzoni: Il tempo vola e noi no. Strano sarebbe se noi 
volassimo e il tempo no, il cielo sarebbe pieno di uomini con 
l'orologio fermo.

 Alberto
Non posso che concordare, d'altra parte si dovrebbe avere anche 
l'elasticitï¿œ di utilizzare un numero di decimali proporzionato alla 
merce che si tratta.
Il prezzo di paio di jeans con 4 decimali ha oggettivamente poco senso, 
ma altrettanto poco senso ha usare 3 decimali quando ne servono 6 come 
ad esempio qui
http://www.enel.it/sportello_online/elettricita/tariffeelettriche/domestiche_monoorarie/D2/
E' un argomento, temo, dove si rischia di rimanere a discuterne per ore 
   ... magari potrebbe essere un argomento da Unofficial Meeting, tra un 
bicchiere di vino e pezzo di porchetto arrosto su un letto di foglie di 
mirto, di cui si potrï¿œ poi degustare il liquore :-)
ciao
stefano

 totale.
[..]
Da quello che so io non ti puoi neppure porre la domanda, lo sconto va 
calcolato sul risultato della moltiplicazione del prezzo per la quantita.
Dal punto di vista dell'esposizione in fattura, nel caso di prezzi con pochi 
decimali normalmente si espone anche l'importo lordo per rendere 
comprensibile il calcolo:
Quantit� - Prezzo - Importo lordo - Sconto - Importo netto - iva. 

 Esistono sostanzialmente due metodi di arrotondamento: sull'unitario o
zac
Ti posso dire come viene affrontato il problema localmente....e dando
ragione ad MR
Il problema degli arrotondamenti dovresti sistemarlo il prima
possibile! ...ossia là dove si genera l'errore!
Ossia dove fai una moltiplicazione o una divisione....
In excel hai la funzione ARROTONDA...in vb te la fai...
quindi
prezzo * qta diventa Arrotonda(prezzo * qta, 2)(in vb...in excel
=arrotonda(cellaprezzo * cellaqta; 2) )
te lo dico perchè sto facendo corsi in excel alla provincia ed al
comune...ed i cari signori hanno un sw che per fare le liquidazioni
delle prestazioni esterne ...le devono fare al centesimo...perchè per
un centesimo il sw si rifiuta di emettere la delibera di pagamento!
Logicamente gli importi se li fanno pre calcolare da excel...con un
foglio programmato alla carlona che ti dà il formato contabilità....ma
sotto memorizza ancora con le canoniche 15 cifre significative...e
alla fine c'è sempre "il centesimino" di differenza!
quidi....arrotoda subito...altrimenti ti trasporti l'errore e corri il
rischio che 3,4 + 1,2 faccia 4,5 o 4,7....e pare parecchio
brutto...anche perchè i totali generali si mettono i genere in colonna
od affiancati...e si notano immediatamente!!!

babysitting, dogsitting, lezioni di latino, traduzioni dall'inglese, 
lavoretti cosï¿œ :)
ciao 

 cos� :)
/SBAM !
Bye, G. 

 lavoretti cosï¿œ :)
:D
LOL
io invece arrotondo quando mangio troppi carboidrati.
ciao
stefano

 calcolato sul risultato della moltiplicazione del prezzo per la quantita.
Non ne sarei cosï¿œ sicuro, come dicevo il risultato della moltiplicazione 
  -sia che tu faccia in un modo sia che tu agisca nell'altro- DEVE 
essere uguale, poi il fatto che si usino numeri razionali piuttosto che 
interi introduce una certa approssimazione sulla cui entitï¿œ tu agisci 
ampliando o riducendo all'abbisogna il numero dei decimali.
Il fatto che poi il cliente non voglia vedersi in fattura 4 decimali ma 
solamente 2 ï¿œ la spinta per effettuare l'operazione come dici tu, ma 
solo perchï¿œ -a mio modo di vedere- non si utilizzano correttamente i 
decimali, quindi una semplice questione di opportunismo (per caritï¿œ, 
comprensibile).
ciao
stefano

lavoretti cos� :)
Volevo scrivere anch'io una risposta simile alla tua, dopotutto ci sta in questi
periodi grami, ma non ne ho avuto il fegato.
Anzi, diciamo che ha prevalso il senso di responsabilit�    ;-)
--
ciao
  Stefano


Personalmente ho sempre preferito il metodo 1 (cioe' l'arrotondamento
sul totale)
Mi e' capitato spesso di lavorare con ferramenta che utilizzano
importi molto bassi con 3,4 e anche 5 decimali sui prezzi unitari, ed
in questo caso il metodo 2 e' difficilmente utilizzabile (in
particolare il problema diventa evidente quando le quantita' sono
dell'ordine delle migliaia e gli importi unitari sono inferiori a
0,01)
Al contrario, il metodo 1 non mi ha mai dato problemi in nessun tipo
di applicazione (almeno per quella che e' la mia esperienza)
Fabio

 Anzi, diciamo che ha prevalso il senso di responsabilit�    ;-)
buona questa :)