Newsgroup: it.comp.appl.access
Titolo: domanda da 1.000.000 di $

Ho provato la funzione ArrDueDec trovata grazie al Sito Comune ma ho un
piccolo inconveniente... l'ho provata su questo numero : 69,615 e
l'arrotondamento invece di essere 69,62 è 69,61.... Cosa vuol dire?
Grazie in anticipo  a tutti coloro che si interesseranno a questo quiz
maledetto.


--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

> spero che tu possa aiutarmi.... grazie ancora

 >


 > maledetto.
Spero che qui si legga in modo chiaro e mi scuso con tutti per la
ripetizione
dei messaggi. Come al solito grazie per la prontezza nella risposta, ma
 per scrupolo ho fatto tutti i tentativi e quando ho provato la funzione
direttamente ArrDueDec(69,615) in visualizzazione mi sono trovato
 69,61 cosa che non ho riscontrato con  altri numeri con caratteristiche
simili
... strano no!!! Come se per
questo numero la funzione  no va bene .. ti dirò di più ho provato la parte
della
funzione: (dinero * 10 ^ 2 - Int((dinero * (10 ^ 2)))) * 10 >= 5  e
 il risultato è 4,99999999 : ho scoperto come mai non funziona, ma non so
il perchè di questo risultato!!!!!
spero che tu possa aiutarmi.... grazie ancora e scusami  Roberto della
risposta che ti ho
mandato per posta

 mandato per posta
Un'altro modo per diminuire la possibilità di errore è quello di sommare al
tuo numero, prima di eseguire la funzione di arrotondamento, il valore
0,0001: non elimini del tutto l'errore però....
Oppure prova ad usare campi di tipo valuta anziché numerici; so che vengono
gestiti da Access in maniera particolare ai fini degli arrotondamenti dei
decimali (se non sbaglio in base ai criteri bancari); non so però cosa
succederebbe usando la funzione di arrotondamento del Sito Comune. D'altra
parte penso che tutte le tue preoccupazione siano legate all'Euro che è
appunto una valuta.


 ha scritto nel messaggio
news:uDqR6.5578$i71.1...@news.infostrada.it...

Ho provato l'altra funzione sempre trovata sul sito comune :
"Function fctRound(varNr, Optional varPl = 2) As Double
' by Konrad Marfurt + ? + Karl Donaubauer
'varNr: numero da arrotondare
'varPI: numero di decimali (due predefinito)
   fctRound = Fix("" & varNr * (10 ^ varPl) + Sgn(varNr) * 0.5) / (10 ^
varPl)
End Function"
e sembra andare tutto oK ringrazio tutti della collaborazione e te Roberto
in particolare
spero che tutto ciò possa servire a qualcun' altro;
 credo che servano proprio a questo i newsgroup!!!

 l'arrotondamento invece di essere 69,62 è 69,61.... Cosa vuol dire?
Per motivi che non conosco ho constatato che la mia funzione effettivamente
ha il problema da te evidenziato. In sostanza legge il numero 5 (terzo
decimale come 4,9999999).
Modificando la dichiarazione delle variabili nella prima riga in questo modo
il problema non si presenta più:
Function ArrDueDec(dinero As Currency) As Currency
Grazie dell'osservazione, e raccomando a tutti coloro che utilizzano la
funzione di fare la modifica.
Ciao Michele

 ha scritto nel messaggio
news:Y9IR6.4015$ZZ.1...@news.infostrada.it...

Non vorrei sbagliarmi ma il tipo di dati valuta non gestisce solamente 4
decimali?
A parte ciò penso che sia assurdo per un programmatore escogitare tutti
questi escamotage per fare quattro conti... a fa me passare la voglia di
programmare!