Funzioni di arrotondamento |
Scritto da Giorgio Rancati |
Sabato 24 Novembre 2007 01:00 |
Le funzioni che seguono vanno memorizzate in un modulo Bas di Access, poi si possono richiamare in una query, nell’origine controllo di una casella testo, da un altro modulo Bas o di classe, ecc.
Arrotonda rende un numero arrotondato al numero di decimali desiderato secondo il metodo commerciale. Arrotonda_Eccesso rende un numero arrotondato per eccesso al multiplo più vicino al peso
Entrambe le funzioni utilizzano il tipo di dato Decimal che non essendo approssimato come Double e Single ed avendo la precedenza su tutti gli altri tipi ci garantisce un risultato corretto. Public Function Arrotonda(ByVal Numero As Variant, _ Optional ByVal Decimali As Variant = 2) As Variant 'Numero =Numero in ingresso 'Decimali=Decimali desiderati Dim result As Variant 'Risultato Dim Nr As Variant 'Numero da trattare Dim Dec As Integer 'Numero decimali Dec = Decimali 'Controllo massimo numero di decimali If Dec > 10 Then Dec = 10 'Converto il numero in ingresso nel tipo decimal Nr = CDec(Nz(Numero, 0)) 'Tolgo l'eventuale segno negativo Nr = Abs(Nr) 'Arrotondo result = Nr * 10 ^ Dec + 0.5 result = Fix(result) / 10 ^ Dec 'Riassegno l'eventuale segno negativo e rendo il risultato Arrotonda = result * Sgn(Nz(Numero, 0)) End Function 'Rende la cifra arrotondata per eccesso al multiplo più vicino al peso. Public Function Arrotonda_Eccesso(ByVal Numero As Variant, _ Optional ByVal Peso As Variant = 0.01) As Variant 'Numero =Numero in ingresso 'Peso = scaglione d'arrotondamento Dim result As Variant 'Risultato Dim Nr As Variant 'Numero da trattare 'Converto il numero in ingresso nel tipo decimal Nr = CDec(Nz(Numero, 0)) 'Tolgo l'eventuale segno negativo Nr = Abs(Nr) 'Arrotondo result = Nr / Peso + 0.99999 result = Fix(result) * Peso 'Riassegno l'eventuale segno negativo e rendo il risultato Arrotonda_Eccesso = result * Sgn(Nz(Numero, 0)) End Function
Esempio di utilizzo: In finestra immediata ?Arrotonda(0.005,2) Risultato: 0,01 ?Arrotonda_Eccesso(12,5) Risultato: 15
Sistema operativo: WIN32 Applicazioni: Access 97, Access 2000, Access 2002/XP, Access 2003, Access 2007
|
Ultimo aggiornamento Giovedì 02 Luglio 2009 13:37 |