RioLab

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri
Home Articoli MS Access Funzioni di arrotondamento

Funzioni di arrotondamento

E-mail Stampa PDF

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  

Pubblicità

Link consigliati: