Newsgroup: it.comp.appl.access
Titolo: Arrotondamento decimale

Un chiarimento un campo che restituisce un valore 14,2947 (4 Dec.)
Se portato a due decimali e giusto che dia come risultato 14,29 ?
Ferrari Rino

 ha
scritto nel messaggio
news:vng2d.331389$5D1.14...@news4.tin.it...

In questo caso sì
MAssimiliano


Direi di si,
se fosse 14,2953 otterresti 14, 30 essendo la 3  cifra decimale minore di 5
arrotonda per difetto.
Saluti
Cinzia

 ha scritto nel messaggio
news:cic5bt$ml$1...@lacerta.tiscalinet.it...

Quindi come mai se porto l'importo 14,295
l'arrotondamento e sempre di 14,29 mentre se non erro dovrebbe essere di
14,30 ?
Quale la causa.
Ferrari Rino

 ha
scritto nel messaggio
news:nkh2d.331912$5D1.14...@news4.tin.it...

Con quale metodo arrotondi???
Usa il metodo di KArl che funzia benissimo
MAssimiliano


Si e lo imposto in questo modo:
PrezzoComplessivo:
FRound(([tblDettagliFatture].[PrezUn]*[Quantità]*((1-[Scont]/100)*1)*((1-[Sc
ontoSuFattura]/100)*1)))
Dove FRound e il nome della funzione di Karl
e mi arrotonda un valore di1,9748
a 1,97 mentre se no erro dovrebbe essere 1,98
Ferrari Rino

 a 1,97 mentre se no erro dovrebbe essere 1,98
L'arrotondamento a 1,97 mi sembra corretto.
Per arrotondare io utilizzo (nel caso di 2 decimali)
Format(X,"Standard").
Commenti ? (anche da MA e Cinzia)
Ciao+
MArco
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 MArco
Il vero mittente sono io (Marco).
Giovanna è una vecchia storia che mi perseguita e da cui non
riesco a liberarmi. (niente di cosi grave, intendiamoci)


 MArco
Sě sě ricordo la storia.
La questione "standard" ti puň indurre in errore.
Questo perchč, č vero che viene visualizzato con
due decimali, ma in un eventuale calcolo
ti viene calcolata l'intera cifra (con tutti i
decimali che ne seguono.
Con la funzione di Karl invece la base di calcolo
č sul numero di decimali che vedi,
perciň č piů corretta.
MAssimiliano

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


Ciao Marco,
non conoscendo la funzione di Karl, quando avevo avuto problemi con gli
arrotondamenti, mi sembra di ricordare che mi ero inventata qualcosa di
questo tipo:
Formattazione con Format e poi riconversione in Numerico con CDbl o Csng e
poi la stessa funzione riapplicata sull'argomento della funzione Somma.
CDbl(Format("12,9765", "#.00"))
Se devo essere sincera ho imprecato abbastanza con Access per via di questi
arrotondamenti fantasiosi, avessi conosciuto prima il NG probabilmente avrai
imprecato meno!!
Ciao
Cinzia

 MArco
Grazie a tutti (Karl compreso)
Adesso mi vedo la funzione


 Ferrari Rino
Se il valore immesso è 14.2947 tale rimane quale che
sia la rappresentazione (formattazione) che tu richiedi
per la visualizzazione.
Se richiedi la visualizzazione di 0, 1, 2, 3, 4, 5  decimali,
le rappresentazioni saranno:
14    14.3     14.29    14.295    14.2947    14.29470
ma il valore nel campo resta sempre e soltanto 14.2947.
Non credo ci sia nulla di cui stupirsi.
Ciao
Bruno 

 con il quale puoi fare altri calcoli.
Tanto per non complicarci la vita con delle stranezze, se nel campo
viene immesso il valore con Round(14.2947,2) nel campo si troverà
il valore 14.29 che può essere usato, così come appare, per
altri calcoli.
Bruno 


Come già discusso troppe volte la vita è complicato qui:
?Round(14.285,2)
 14,28
-- 
HTH
Karl
*********
Access-FAQ 
http://www.donkarl.com/it

 14,28
L'arrotondamento matematico è sempre stato il Round
di Access, da quando facevo le elementari.
La stranezza per me fu quando con Excel v2 (la prima per PC, se
ben ricordo dell'ottobre 1982) mi trovai con gli arrotondamenti
quali li vorremmo adesso con l'Euro.
Ed ora ci stupiamo se ritroviamo quelli di allora.
Tralasciando la futile discussione se sia più giusto
l'arrotondamento sul 5 per difetto o per eccesso
(futile in quanto la scelta è basata su una convenzione),
la stranezza maggiore è che Round(14,285,2)
fa 14.28 in Access e 14.29 in Excel.
O tempora, o Microsift...
Bruno 

 fa 14.28 in Access e 14.29 in Excel.
Esistono 2 funzione Round diverse.
La vecchia funzione spreadsheet di Excel che fa 14.29
e la funzione più nuova di VBA che fa 14.28.
Vedi anche i link nel mio FAQ 2.1.
-- 
cu


... L'unico uso del 5 all'intero più vicino ...
Hmm, credo che qui abbiamo un sbaglio nella
traduzione della FAQ. Debb'essere qc. come
"intero pari più vicino", cioè 2, 4, 6, 8 ecc.

 ha scritto nel messaggio
news:PBU2d.270383$OR2.12...@news3.tin.it...

A mio avviso la vita te la stai complicando inutilmente tu che insisti nel
dire che la funzione Round effettua l'arrotondamento commerciale in modo
corretto; comunque tu puoi fare come vuoi, ma mi sembra sciocco voler
convicere gli altri a sbagliare.
In Italia dall'entrata in vigore dell'Euro gli arrotondamenti fiscali e
commerciali sono stati stabiliti per legge e non vengono certo effettuati
dalla funzione Round; inoltre me ne può fregare di meno di come avvengono
e/o avvenivano gli arrotondamenti con Excel: in questo NG si parla Acces e
mi sembra assurdo non voler ammettere che l'unico modo certo per effettuare
un arrotondamento commerciale esatto sia la funzione di Karl, e questo
proprio per non complicarsi la vita.


 Bruno


 falso per >99% dei utenti di Access.
Sono d'accordo per l'inutilità attuale, ma perché
tacciarlo anche di falsità?
Una convenzione può essere falsa?
Non conosco la funzione di Karl qui ben nota.
Ti sarei grato volessi citarmela.
Io dall'Euro in qua ho usato la funzione
IP((ValueToRound * 10000 + 50) / 100) / 100
per l'arrotondamento alla seconda cifra decimale.
Dove IP è un'altra funzione che restituisce la parte
intera di un numero decimale e che, a differenza di
INT e FIX, non effettua arrotondamenti né sui numeri
negativi né su quelli positivi (vecchia reminiscenza
dal Basic HP).
Ti ringrazio della cortesia
Bruno

 Bruno
-- 


 specificata (uso commerciale)".
Ho chiesto all'autore la formula di Karl!
Che indelicatezza!
Non ho capito cosa ci stia a fare quella stringa
vuota visto che - nei pochi tentativi fatti - funziona anche
senza. Indagherò ulteriormente.
Comunque "Nihil novi sub sole".
La mia e la sua hanno la stessa origine: l'Assembler
Z80 a sua volta derivante dal vecchio
assembler IBM (quello che si usava quando le
memorie erano a nuclei toroidali).
Dal che avrai capito che i 20 anni li ho compiuti
più di una volta.
Ciao
Bruno 

 Una convenzione può essere falsa?
Non la convenzione è falso ma il suo uso ed i suoi risultati
sono falsi per la grande maggioranza dei utenti di Access
che quando arrotonda ha l'intenzione di arrotondare soldi
correttamente.


 Ciao


 ha
scritto nel messaggio
news:42Y2d.9624$2T6.2...@twister1.libero.it...

Magari poi in xls c'è una funzione di un'omologo
di Karl che "corregge" la nativa funzione round:
anche in Access esiste e se non ci fosse stato il
NG non avresti saputo che esiste qualcosa di
diverso.
Frequenti i Ng di xls??
MAssimiliano

 di Karl che "corregge" la nativa funzione round:...
Non è necessario in Excel. Come descritto nella FAQ 2.1
Excel da molte versioni ha la funzione spreadsheet Round
che arrotonda bene seguendo la convenzione commerciale.
La sciocchezza è che MS con Office 2000 ha aggiunta un'
altra funzione Round alla libreria VBA (quindi questo che
abbiamo anche disponibile in Access) che non arrotonda
in senso commerciale e per questo è la fonte di malintesi
e sbagli.
Ho discusso questo problema diverse volte con la gente
di MS che fa Access/Office e VBA. Ovviamente finora
non l'hanno trovato così importante. L'unica cosa che l'hanno
fatto per evitare malintesi è un articolo KB (link nella FAQ 2.1).
Certo la maggior parte dei utenti non lo conosce è pensa
che VBA.Round è giusto per arrotondare soldi.


 che VBA.Round è giusto per arrotondare soldi.
E pensare che da studente facevo salti mortali per
arrotondare soldi...
MAssimiliano