Dilemma calcolo 2 decimali

venerdì 05 dicembre 2008 - 17.38

Idea Grip Profilo | Newbie

Salve a tutti del forum, ho la necessità di sommare il campo iva di una serie di fatture.
Il mio problema sta nel fatto che in una verifica della somma con la calcolatrice di sistema mi viene quasi sempre una differenza di un centesimo per eccesso o per difetto, questo non è accettabile.
Ho creato delle formule ed ho usato degli operatori prima il Round e poi (non contento) il Truncate, entrambi a 2 decimali. A volte è corretto uno, a volte l'altro, com'è possibile?

278x328 18Kb


244x406 22Kb

Vedete nelle immagini, vi sono due esempi.

Non so che fare

0v3rCl0ck Profilo | Guru

>Salve a tutti del forum, ho la necessità di sommare il campo
>iva di una serie di fatture.
>Il mio problema sta nel fatto che in una verifica della somma
>con la calcolatrice di sistema mi viene quasi sempre una differenza
>di un centesimo per eccesso o per difetto, questo non è accettabile.
>Ho creato delle formule ed ho usato degli operatori prima il
>Round e poi (non contento) il Truncate, entrambi a 2 decimali.
>A volte è corretto uno, a volte l'altro, com'è possibile?

Probabilmente stai utilizzando il round di default con approssimazione bancaria.

Hai provato così:

Math.Round(ValoreDecimalODouble, MidpointRounding.AwayFromZero)

>
>
>Vedete nelle immagini, vi sono due esempi.
>
>Non so che fare

Enjoy It

-------------------------------------------------------------------
Michael Denny
Senior Software Developer - Microsoft Framework (C# ASP.NET VB.NET)
http://blogs.dotnethell.it/Regulator/

Idea Grip Profilo | Newbie

>Probabilmente stai utilizzando il round di default con approssimazione
>bancaria.
>
>Hai provato così:
>
>Math.Round(ValoreDecimalODouble, MidpointRounding.AwayFromZero)

Ho provato così OverClock:
Math.Round({#RTotal2}+{#RTotal3},MidpointRounding.AwayFromZero)
e così:
Math.Round({#RTotal2}+{#RTotal3},2, MidpointRounding.AwayFromZero)
Purtroppo non riesco a farla funzionare, mi da errore su Math: "E' necessaria un'istruzione", ho anche messo Sintassi Basic, ma nulla.

0v3rCl0ck Profilo | Guru

Sinceramente ho notato ora che si tratta di crystal report, e non so se la sintassi è uguale. Diciamo che quella che ti ho passato è l'istruzione .net dalla versione 2.0. Comunque il problema penso sia quello, prova ad indagare, cercando "crystal report Math Round AwayFromZero".


-------------------------------------------------------------------
Michael Denny
Senior Software Developer - Microsoft Framework (C# ASP.NET VB.NET)
http://blogs.dotnethell.it/Regulator/

Idea Grip Profilo | Newbie

>Sinceramente ho notato ora che si tratta di crystal report, e
>non so se la sintassi è uguale. Diciamo che quella che ti ho
>passato è l'istruzione .net dalla versione 2.0. Comunque il problema
>penso sia quello, prova ad indagare, cercando "crystal report
>Math Round AwayFromZero".

Ho provato ad indagare, ma non ho trovato la soluzione, ho provato addirittura con la funzione FIX, ma è uguale a Truncate.

freeteo Profilo | Guru

Ciao,
si quello che ti ha suggerito Overclock è codice C# e crystal nelle formule ha una sintassi completamente diversa, magari fosse C# sarebbe tutto più semplice

Ti lascio il link alla guida ufficiale alla sintassi:
https://smpdl.sap-ag.de/~sapidp/012002523100005986792008I/cr8_formularef_italian.zip

A parte questo, ti chiedo, ma quella somma come la fai? hai sommato i campi quindi aggiungendo da tasto DX sul campo nei dettagli->Insert Summary quindi lui somma i valori già arrotondati, o hai fatto un campo sommatoria a mano e poi arrotondato solo il risultato finale?
Perchè potrebbe essere li il problema...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5