![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: zeos
sql-round
hallo zusammen,
was ist an dieser formel falsch?
SQL-Code:
das Ergebnis ist gerundet auf eine Stelle hinterm Komma, ich brauch aber 3 Stellen :-(
update artikelpreise set NETTOPREIS = Round((bruttopreis/107 * 100),3);
beide felder sind decimal(8,3) danke Gruss Kh |
Re: sql-round
Hallo,
ist das genau dein SQL oder nur sinngemäß ? |
Re: sql-round
Eigentlich stimmt der Aufruf. Verwendest du die UDF oder die builtin-Funktion?
|
Re: sql-round
Zitat:
aus einem Bruttopreis von 1,000 macht er 0,900 :-( |
Re: sql-round
Früher war diese Funktion nur per UDF verfügbar ab FB 2.1 auch direkt ohne die UDF. Deshalb meine Frage.
|
Re: sql-round
ich hab grad nochmal im Programm nachgeschaut.
dort runde ich mit der Funktion RoundCurrency , damit das Ergebnis richtig kaufmännisch gerundet wird. Vieleicht geht das kaufmännische runden mit sql-Funktion ja gar nicht? |
Re: sql-round
Die interen Funktion rundet ab einer 5 auf und bis 4 ab
|
Re: sql-round
Zitat:
das ist ja auch richtig aber warum wird aus 0,934 - 0,900 ? |
Re: sql-round
Dütfte nicht sein, deshalb auch die Frage ob du vielleicht eine gleichlautende UDF-Funktion nutzt!
|
Re: sql-round
Zitat:
hab ganz einfach das Script im sql-editor von ib-expert ausgeführt |
Re: sql-round
Schau mal im IbExpert unter UDF nach.
Was liefert
SQL-Code:
select bruttopreis/107 * 100 as brutto, Round(bruttopreis/107 * 100,3) as netto from artikelpreise;
|
Re: sql-round
Zitat:
UDF gibts nur get_context und set_context |
Re: sql-round
Dann liegt der Fehler ja nicht am Round sondern an der Berechnung, denn 0,900 ergibt auf 3 Nachkommastellen gerundet 0,900
|
Re: sql-round
Zitat:
ich rechne 1,000 / 107 * 100 = 09,345 von hand. die Formel rechnet 1,000 / 107 * 100 = 09,000
SQL-Code:
dabei hab ich grad gemerkt es ist egal ob 3 oder 5 oder sonst was als 2tes Argument in der Formel steht :-(
update artikelpreise set NETTOPREIS = round((bruttopreis/107 * 100),5);
oder update artikelpreise set NETTOPREIS = round((bruttopreis/107 * 100),3); das Ergebmis ist das Gleiche auch
SQL-Code:
bringt das gleiche Ergebnis
select bruttopreis/107 * 100 as brutto, Round(bruttopreis/107 * 100,5) as netto from artikelpreise;
|
Re: sql-round
Zitat:
Was ergibt
SQL-Code:
select bruttopreis/1.07 from artikelpreise;
|
Re: sql-round
Zitat:
ist aber doch das Gleiche wie bruttopreis/107 * 100 ? |
Re: sql-round
Jein. Beim Berechnen scheint der kleinste kompatible Typ verwendet zu werden.
bei 1.0 / 107 ist das der Integer von 107 -> bruttopreis/107.0 * 100.0 |
Re: sql-round
Zitat:
naja ich machs jetz mit bruttopreis/1.07, dann passts war jetzt wirklich ne schwere Geburt ;-) ich danke euch. Gruss KH |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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