Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Rundungsproblem (https://www.delphipraxis.net/138505-rundungsproblem.html)

khh 11. Aug 2009 15:44

Datenbank: firebird • Version: 2.1 • Zugriff über: Zeos

Rundungsproblem
 
hallo zusammen,
ich habe ein Variable "Bruttopreis" die aus nettopreis + mwst besteht( nettopreis und mwstsatz wird aus der db gefüllt. mwst mit dem mwstsatz berechnet).
In der Variable Bruttopreis von typ currency habe so ich z.B 8496 stehen
mit roundcurrency wird der Wert kaufmännisch richtig auf 8500 gerundet (als 0,85 € )

nun möchte ich diesen berechneten Wert auch in einem db grid anzeigen.
da hier nur der mwstsatz und nicht die mwst als Wert vorhanden ist habe ich dazu die Query folgendermassen ergänzt:
SQL-Code:
round(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))),2) as bruttopreis
wobei der mwstsatz aus einer anderen tabelle gelesen und als ParamByName('mwstsatz').Ascurrency übergeben wird.
Leider wird so nicht richtig gerundet und ich erhalte als Ergebnis 84 anstatt 85

Wie kann ich in der query richtig runden?

danke euch

gruss KH

mkinzler 11. Aug 2009 15:54

Re: Rundungsproblem
 
SQL-Code:
TRUNC(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) as bruttopreis

khh 11. Aug 2009 15:56

Re: Rundungsproblem
 
Zitat:

Zitat von mkinzler
SQL-Code:
TRUNC(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) as bruttopreis

danke dir für die schnelle antwort, werd ich morgen ausprobieren, muss jetzt leider weg.

Gruss KH

khh 12. Aug 2009 08:42

Re: Rundungsproblem
 
Zitat:

Zitat von khh
Zitat:

Zitat von mkinzler
SQL-Code:
TRUNC(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) as bruttopreis

danke dir für die schnelle antwort, werd ich morgen ausprobieren, muss jetzt leider weg.

Gruss KH

funktioniert so leider nicht da kommt 1 raus :-(

mkinzler 12. Aug 2009 08:48

Re: Rundungsproblem
 
Mein Code "rundet" auf ganze Stellen um entsprechende Nachkommastellen zu erhalen muss man entsprechend "Verschieben"
SQL-Code:
TRUNC((nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) * 100) / 100 as bruttopreis

khh 12. Aug 2009 09:27

Re: Rundungsproblem
 
Zitat:

Zitat von mkinzler
Mein Code "rundet" auf ganze Stellen um entsprechende Nachkommastellen zu erhalen muss man entsprechend "Verschieben"
SQL-Code:
TRUNC((nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) * 100) / 100 as bruttopreis

sorry ich steh heute aufm Schlauch, was meinst mit verschieben?
was macht das +0.5 ?

mkinzler 12. Aug 2009 09:34

Re: Rundungsproblem
 
- Trunc() schneidet alle Nachkommastellen ab
0,85 -> 0
- +0,5 bewirkt dass ab ,5 aufgerundet wird
0,4 + 0,5 -> 0,9 -> 0
0,5 + 0,5 -> 1 -> 1

khh 12. Aug 2009 09:47

Re: Rundungsproblem
 
Zitat:

Zitat von mkinzler
- Trunc() schneidet alle Nachkommastellen ab
0,85 -> 0
- +0,5 bewirkt dass ab ,5 aufgerundet wird
0,4 + 0,5 -> 0,9 -> 0
0,5 + 0,5 -> 1 -> 1

ok, soweit hab ich das jetzt kapiert,

ich brauche aber die funktion so, dass aus 0,849 auf 0,85 gerundet wird, und das klappt so leider nicht :-(
edit:
also ich muss z.B. auf netto 0,794 7% dazu rechnen, was 0,849 ergibt und dieses kaufmännisch runden

mkinzler 12. Aug 2009 09:51

Re: Rundungsproblem
 
Dann müsstest du das Komma temporär um 3 Stellen ( * 1000 / 1000) verschieben

p80286 12. Aug 2009 10:01

Re: Rundungsproblem
 
Hallo KH

dann addiere doch 0,005!

Allerdings hab ich ein leichtes Problem mit Deiner Vorgehensweise. Ich würde so viel wie möglich "in der DB" erledigen und dann den Rest mit Delphi, oder aber nur die Rohdaten aus der DB holen und dann in Delphi rechnen.
Deine Lösung mit der HinundherCasterei sehe ich mit leichtem Unbehagen, da ich mit den unterschiedlichen Typen (Oracle/Delphi) in einem ähnlichen Fall auf die Nase gefallen bin.

Gruß K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz