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 2 von 3     12 3      
khh

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:04
Zitat von mkinzler:
Dann müsstest du das Komma temporär um 3 Stellen ( * 1000 / 1000) verschieben
ok so funktionierts
mit:
TRUNC(((nettopreis *1000) + (nettopreis* 1000/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) ) as bruttopreis
habe ich richtig gerundet das 1000 fache.
bekomme ich das jetzt noch innerhalb des statements wieder durch 1000 geteilt in bruttopreis, oder geht das nicht ?
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:09
<Ausdruck> := Trunc( <Ausdruck> * 10 ^<Stellen>) / 10 ^<Stellen>;
Markus Kinzler
  Mit Zitat antworten Zitat
khh

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:14
Zitat von mkinzler:
<Ausdruck> := Trunc( <Ausdruck> * 10 ^<Stellen>) / 10 ^<Stellen>;
ich meinte innerhalb des sqlstatements.

'select artikel_id,artikelpreis_id, bezeichnung, gilt_abmenge, nettopreis, TRUNC(((nettopreis *1000) + (nettopreis* 1000/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) ) as bruttopreis from artikelpreise ............');
so hab ich jetzt in bruttopreis das richtig gerundete aber 1000 fache Eergebnis
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:28
Einfach nach dem Trunc durch 1000 teilen
Markus Kinzler
  Mit Zitat antworten Zitat
khh

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 10:59
Zitat von mkinzler:
Einfach nach dem Trunc durch 1000 teilen
so hatte ich mir das auch gedacht,leider funktioniert das nicht, weiss der Teufel warum.
wenn ich _nicht_ teile steht im currency-feld 8500000, also das tausendfache was ich brauche
teile ich durch 10 steht im currency-feld 850000
teile ich durch 100 steht im currency-feld 80000
teile ich durch 1000 steht im currency-feld 0


was läuft da schief?


EDIT: sieht für mich so aus als würde das TRUNC erst nach den Rechenoperationen ausgeführt, oder?
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 11:47
Zitat:
EDIT: sieht für mich so aus als würde das TRUNC erst nach den Rechenoperationen ausgeführt, oder?
Ja natürlich, ist ja eine Funktion
Markus Kinzler
  Mit Zitat antworten Zitat
khh

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 12:12
Zitat von mkinzler:
Zitat:
EDIT: sieht für mich so aus als würde das TRUNC erst nach den Rechenoperationen ausgeführt, oder?
Ja natürlich, ist ja eine Funktion
tja und was mach ich dann, damit ich das Funktionsergebnis teilen kann?
so:
(TRUNC(((nettopreis *1000) + (nettopreis* 1000/100 * CAST(:mwstsatz AS NUMERIC(15,2))) +0.5) ))/1000 as bruttopreis

funktionierts ja nicht
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 12:15
Und warum nicht?
Markus Kinzler
  Mit Zitat antworten Zitat
khh

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 13:15
Zitat von mkinzler:
Und warum nicht?
weil so das rauskommst was ich in #15 beschrieben habe.
Karl-Heinz
  Mit Zitat antworten Zitat
khh

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

Re: Rundungsproblem

  Alt 12. Aug 2009, 13:19
Zitat von p80286:
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
im Programm zu rechnen htte ich ja erst auch gedacht, aber wie krieg ich die Werte dann ins Datengrid?
im Moment mach ich das ja so:
TColumn(self.Columns[3]).Field:= FpreiseQuery.FieldByName('bruttopreis');
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 14: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