AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rundungsproblem

Ein Thema von khh · begonnen am 11. Aug 2009 · letzter Beitrag vom 14. Aug 2009
Antwort Antwort
Seite 1 von 3  1 23      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

Rundungsproblem

  Alt 11. Aug 2009, 16:44
Datenbank: firebird • Version: 2.1 • Zugriff über: Zeos
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:
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
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Rundungsproblem

  Alt 11. Aug 2009, 16:54
TRUNC(nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) as bruttopreis
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Rundungsproblem

  Alt 11. Aug 2009, 16:56
Zitat von mkinzler:
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
Karl-Heinz
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Rundungsproblem

  Alt 12. Aug 2009, 09:42
Zitat von khh:
Zitat von mkinzler:
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
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Rundungsproblem

  Alt 12. Aug 2009, 09:48
Mein Code "rundet" auf ganze Stellen um entsprechende Nachkommastellen zu erhalen muss man entsprechend "Verschieben"
TRUNC((nettopreis + (nettopreis/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) * 100) / 100 as bruttopreis
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:27
Zitat von mkinzler:
Mein Code "rundet" auf ganze Stellen um entsprechende Nachkommastellen zu erhalen muss man entsprechend "Verschieben"
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 ?
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:34
- 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
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:47
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
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:51
Dann müsstest du das Komma temporär um 3 Stellen ( * 1000 / 1000) verschieben
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Rundungsproblem

  Alt 12. Aug 2009, 11:01
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
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