![]() |
Preise runden
Hallo,
ich möchte in meiner Datenbank Preise runden. Alle Preise sind mit 2 Nachkommastellen versehen. Einstellige Preise die unter 10 € liegern sollen auf einen einstelligen Wert gerundet werden. Zweistellige Preise, die zwischen 10 u. 99 € liegen sollen auf 5 € genau gerundet werden. Dreistellige Preise, die zwischen 100 u. 999 € liegen sollen auf 10 € genau gerundet werden. Vierstellige Preise, die zwischen 1000 u. 9999 € liegen sollen auf 100 € genau gerundet werden. usw. Hat jemand schon so eine Funktion o. ähnliches programmiert. Wäre für schnelle Hilfe dankbar. :?: |
Re: Preise runden
Hallo
mit datenbanken mach ich nix, aber du hast die Frage ja auch nicht in der Datenbank rubrik gewählt :P bis auf die 5 euros ist das runden einfach: entweder round verwenden und die beträge mit einem faktor dividieren und wieder multiplizieren, oder roundto verwenden (macht aber im Prinzip genau das gleiche).
Delphi-Quellcode:
Mfg Frank
ListBox1.Items.Add(FloatToStr(round( 543.21/10 )*10));
ListBox1.Items.Add(FloatToStr(roundTo( 543.21 ,1))); //uses math, weiß nicht, ab welcher delphi-version das dabei ist |
Re: Preise runden
und für den 5-steller kannst du ja mal das probieren:
Delphi-Quellcode:
Mfg Frank
function Runden5(d:double):double;
Var x:double; begin //zweistelligen Anteil entfernen x:=frac(d/10)*10; if x<2.5 then d:=d-x else if (x>=2.5) and (x<5) then d:=d+(5-x) else if (x>=5) and (x<7.5) then d:=d-x+5 else d:=d+(10-x); result:=d; end; |
Re: Preise runden
Hallo, grüß Dich,
ich habe einige Rechnungsprogramme im Umlauf :-D Meine Erfahrung nach der Umstellung auf den Euro - bloß nicht in der DB runden! Erst recht nicht mit der Round-Funktion von Delphi. Sinnvollerweise sollte das bei der Anzeige erst mit Endbeträgen geschehen, sonst summieren sich die Rundungsfehler beim addieren! Die meisten Reportgeneratoren haben eine etsprechend bessere Rundungsfunktion. Lieben Gruß, Jochen |
Re: Preise runden
Erst mal vielen Dank für die Tips.
Es sollte aber nicht nur auf eine Stelle gerundet werden, sondern je nach Stellenanzahl wie oben angegeben. Vielleicht stelle ich mich auch nur so dumm an ? Hier ein paar Beispiele. 4,35 € (5,-€) 14,76 € (15,-€) 22,13 € (20,-€) 78,89 € (80,-€) 108,20 € (100,-€) 139,40 € (150,-€) 345,17 € (350,-€) 1.688,04 € (1.700,-€) 8.278,13 € (8.300,-€) Es kann auch ein Routine sein, die nicht mit einer einzigen Funktion alles abdeckt. Danke im voraus. |
Re: Preise runden
Zitat:
Zitat:
wie das mit dem runden geht, steht alles schon da, entweder roundto oder round mit divid. und multi. mit unterschiedlichen Faktoren. du mußt dir halt noche eine if-abfrage basteln, die je nach zahlengröße die richtige Rundungsfunktion aufruft.
Delphi-Quellcode:
Mfg Frank
if zahl<10 then runden_einstellung...
else if zahl<100 then ... else if zahl<1000 then ... |
Re: Preise runden
Alles klar,
Jetzt hab ichs geschnallt. Vielen Dank nochmal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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