![]() |
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:
wobei der mwstsatz aus einer anderen tabelle gelesen und als ParamByName('mwstsatz').Ascurrency übergeben wird.
round(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))),2) as bruttopreis
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 |
Re: Rundungsproblem
SQL-Code:
TRUNC(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) as bruttopreis
|
Re: Rundungsproblem
Zitat:
Gruss KH |
Re: Rundungsproblem
Zitat:
|
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
|
Re: Rundungsproblem
Zitat:
was macht das +0.5 ? |
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 |
Re: Rundungsproblem
Zitat:
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 |
Re: Rundungsproblem
Dann müsstest du das Komma temporär um 3 Stellen ( * 1000 / 1000) verschieben
|
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 12:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz