Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Ho necessità di arrotondare importi a due cifre decimali in un'applicazione di Access 2010
Potrei utilizzare la funzione Round ma nel mio caso non soddisfa la mia esigenza in quanto l'arrotondamento avviene da 0 a 4 in difetto e da 5 in poi in eccesso
A me serve in difetto da 0 a 5 e in eccesso da 6 in poi.
[CUT]
con questa il risultato è corretto: 115.21
Anche se ho risolto il problema vorrei capire il perché.
Faccio presente che la prima delle due procedure in VB6 funziona correttamente.
Grazie infinite.
Ottolini Antonio
Ciao Ottolini Antonio,
forse intendevi che ti serve una funzione che faccia l'arrotondamento commerciale da 0 a 4 in difetto e da 5 a 9 in eccesso.
Comunque non hai risolto, diciamo che per quel particolare numero la tua funzione rende il risultato corretto ma se provi con il valore 151.515 otterrai 151.51 (cifra errata)
il nodo della questione risiede nel tipo di dato Double che per sua natura è approssimato quindi non avrai mai una funzione che si comporti correttamente con tutti i valori passati.
Per avere il risultato corretto bisogna far lavorare la funzione su un tipo di dato non approssimato come ad esempio il Decimal.
Qualche anno fa ho scritto una funzione di arrotondamento, puoi prendere spunto da qui: Funzioni di arrotondamento
Anche in anche in VB6 avevi il problema magari non con il numero 115.205 ma sicuramente con altri, solo che non te ne sei mai accorto.
p.s. la funzione Round di VB6 o di VBA arrotonda secondo il metodo gaussiano e non con il metodo commerciale.
Ciao
Giorgio Rancati