Newsgroup: it.comp.appl.access
Titolo: Ancora arrotondamenti,cosa mi sfugge ?

Buonasera a tutti
WinXP+A2003
i campi sono  precisionedoppia,formato standard e 2 decimali
Ho una maschera con 4 caselle testo 
:TxtPrzListinoOrdi,TxtPrzPietanzaOrdi,TxtNumPietanza,(associate  per i nomi 
dei campi relativi basta togliere il prefisso Txt.)e TxtTotPietanza .(che č 
calcolato con questa espressione 
=nz([TxtNumPietanza])*nz([TxtPrzPietanzaOrdi])
Uso questa sub:
Private Sub FaccioSconto() 'serve per aggiornare la sottomaschera 
MaskDettOrdi
' se applico lo sconto o no
If Me.MaskDettOrdi.Form.RecordsetClone.RecordCount = 0 Then 'sono al primo 
record
    Exit Sub
End If
DoCmd.SetWarnings False 'tolgo l'avviso di aggiornamento righe
If Not IsNothing(Me.TxtPercSconto) Then 'sto applicando una percentuale di 
sconto
DoCmd.RunSQL "UPDATE OrdiniDettaglio SET OrdiniDettaglio.PrzPietanzaOrdi = " 
_
& " CCur(OrdiniDettaglio.PrzListinoOrdi* " _
& " (1-(Forms!FrmOk!TxtPercSconto)/100)), OrdiniDettaglio.PercSconto = " _
& Forms!frmok!TxtPercSconto _
& " WHERE OrdiniDettaglio.IdOrdine=" & Forms!frmok!MaskDettOrdi!TxtIdordine
    Else 'non ho una percentuale sconto inserita
    'quindi OrdiniDettaglio.PrzPietanzaOrdi=prezzo listino
    'e la percentuale sconto č 0
    DoCmd.RunSQL "UPDATE OrdiniDettaglio SET OrdiniDettaglio.PrzPietanzaOrdi 
= " _
        & "(OrdiniDettaglio.PrzListinoOrdi)  , OrdiniDettaglio.PercSconto = 
0 " _
        & " WHERE OrdiniDettaglio.IdOrdine=" & 
Forms!frmok!MaskDettOrdi!TxtIdordine
End If
DoCmd.SetWarnings True 'ripristino gli avvisi
Me.MaskDettOrdi.Requery
End Sub
E fin qui tutto OK
TxtTotPietanza perň mi restituisce,quando applico lo sconto, un valore che 
usa  TxtPrzPietanzaOrdi]) non arrotondato e a 3 cifre decimali.
P.e. Se la form mi visualizza TxtPrzPietanzaOrdi=2,63 il campo calcolato usa 
2,625 e non 2,63 e quindi il risultato di TxtTotPietanza se ho
TxtNumPietanza= 7 č 18,38 e non quello reale di 18,41
Qualcuno mi puň spiegare per piacere perchč accade ciň?
Grazie
Ciao
maurizio 

    
Il formato double o single sono assolutamente da scartare in contabilità.
L'alternativa è currency o decimal
-- 
Daniele
Rispondere scartando OneEDP, spam e 32


Letto questa affermazione mi vengono dei dubbi sulla mie applicazioni che 
usano solo Double.
Che problemi potrei avere a trasformare i campi da Float a Decimal o 
Currency su SQL SERVER 2005?
Thanks 


Potresti ottenere risultati inaspettati sui decimali a causa degli 
"arrotondamenti" dopo la cast
Infatti 1,02 potrebbe essere rappresentato in float come 1,019978699999 
e 1 come 1,0000001
Devi accettare il compromesso che "qualche decimale" verrà sacrificato.
Ti segnalo anche smallmoney 
http://technet.microsoft.com/it-it/library/ms179882.aspx
Ciao


 ha scritto nel messaggio 
news:4c6d344e$0$18662$4faf...@reader3.news.tin.it...

il mio problema è che i totali vengono visualizzati su degli scontrini  e 
,in teoria, ma anche in pratica dovrebbero essere giusti.
se qualcuno butta l'occhio a una voce con importo unitario di 2,63 e 
quantità 7 si aspetta l'ultima cifra del totale sia 1 e non 8  cioè 18,38 e 
non quello reale di 18,41.
Restando nell'ambito tutto access con tabelle mdb cosa posso usare e come ?
Grazie
Ciao
Maurizio
e 


Forse perché il prezzo unitario è 2,625?
In "ambito" access vale lo stesso o currency (alias money per sql 
server) o decimal


 ha scritto nel messaggio 
news:4c6d5b7d$0$18662$4faf...@reader3.news.tin.it...

mi sono documentato su internet e ,da quello che ho capito,anche alivello 
fiscale se il prezzo vendita unitarioè superiore a 2 decimali allora per i 
calcoli si fanno gli arrotondamenti al 2° decimale,mentre se il prezzo di 
vendita unitario è a  2 decimali il problema non esiste in quanto si fanno 
tutti i calcoli con 2 decimali.
GRAZIE  a tutti per le risposte.
Un ultimo chiarimento:
perchè  il formato double o single sono assolutamente da scartare in 
contabilità ?
Se portano a dei risultati sballati come mai succede ?
Grazie ancora
Saluti
Maurizio