Newsgroup: it.comp.appl.access
Titolo: arrotondare con la Function fctRound

Il sito di Karl, lo sto scaricando tutto!
Nella mia Sottomaschera SM_Dettagli_Documenti
ho inserito Function fctRound per l'arrotondamento dei decimali, è OK.
totaleriga=quantita*prezzo+IVA-sconto
1*10+20%-11,11%
totale riga1 = 10,67
totale riga2 = 10,67
------------------------
Totale      21,33 !!!! manca 1 centesimo
(nel piedipagina maschera totale = quantita*prezzo+IVA-sconto)
lo ritroviamo il centesimo perduto?
-- 
Cataldo Formaro

 wrote in message 
news:4943990e$0$1080$4faf...@reader1.news.tin.it...

10 * 1.2 * 0.8889 = 10.6668
10.6668 * 2 = 21.3336 ==> 21.33
Quale centesimo?
Bruno

 ha scritto nel messaggio 
news:4943aa79$0$18152$4faf...@reader3.news.tin.it...

totale delle riga1+totale riga2 = 21,34
Ciao
Cataldo Formaro 

 Cataldo Formaro
Ma come ottieni quei due 21.34?
Sono un essere o un apparire?
Se fai:
=fctRound(10*1.2*0.8889)
in due celle e poi sommi le due celle ottieni
(io ottengo) 21.34
Bruno

> 10.6668 * 2 = 21.3336 ==> 21.33
se vuoi sommare il prezzo arrotondato devi troncarlo definitivamente.
Per capire il problema prova a visualizzare il campo con 5 cifre decimali.
IvanDaBologna

 Ma come ottieni quei due 21.34?
Volevo dire quei due 10.67
Bruno

 ha scritto nel messaggio 
news:4943990e$0$1080$4faf...@reader1.news.tin.it...

E' corretto!
Questa una funzione per arrotondare con l'euro:
Public Function ArrotondaEuro(dblValore)
On Error Resume Next
    If dblValore < 0 Then
    dblValore = (Mid(dblValore, 2, Len(dblValore)) * 100) + 0.5
    If InStr(CStr(dblValore), ",") <> 0 Then dblValore = Int(dblValore)
    ArrotondaEuro = dblValore / 100
    ArrotondaEuro = "-" & ArrotondaEuro
    Else
    dblValore = (dblValore * 100) + 0.5
    If InStr(CStr(dblValore), ",") <> 0 Then dblValore = Int(dblValore)
    ArrotondaEuro = dblValore / 100
    End If
End Function
Se alla funzione gli passi il valore trovato ottieni:
Arrotondaeuro(21.3336) = 21,33
In realtà 10,6668 + 10,668 = 21,3336
Questo risultato andrebbe bene se devi ancora sommare valori con 4 o più 
cifre decimali come si fa, per esempio, nelle gare ospedaliere (penso per 
esempio al valore del singolo bicchiere di carta (0,1438), ma non va bene 
nel valore totale espresso in euro semplicemente perché l'arrotondamento 
delle cifre decimali oltre la seconda, viene fatto in base ad una regola ben 
precisa e anche perche (sulla cifra totale) non è possibile pagare o 
riscuotere somme inferiori al centesimo.
Questi alcuni spunti:
http://www.studiosei.it/Euronews/arrotonda.htm
oppure:
http://euro.finanze.it/regole.htm
Tieni presente che l'uso e il calcolo sulle cifre decimali dopo la seconda è 
concesso solo agli enti pubblici che possono arrivare fino a sei cifre 
decimali.
Ciao, Carlo 

cut
preciso meglio
Nella mia Sottomaschera SM_Dettagli_Documenti
visualizzazione maschere continue
ho il controllo non associato totaleriga 
=([Qta]*[Prezzo])*(1+[niva]/100)*(1-[Sconto]/100)1*10+20%-11,11%
totale riga1 = 10,67
totale riga2 = 10,67
------------------------
nel piedipagina maschera  ho il controllo non associato
totale 
=Somma(((([Qta]*[Prezzo])+([Qta]*[Prezzo]*[niva])/100)*[Sconto]/100)-([Qta]*[Prezzo])-([Qta]*[Prezzo]*[niva])/100)*(-1)
che mi da come Totale      21,33 !!!! manca 1 centesimo
dunque il totale riga è giusto.
Il totale nel piedipagina è pure giusto in quanto non effettua il totale sui 
totali di righe.
ciao
Cataldo Formaro
Bruno: un'aggiustatina all'ora di sistema.