AGB  ·  Datenschutz  ·  Impressum  







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

Preise runden

Ein Thema von needatip · begonnen am 29. Mai 2004 · letzter Beitrag vom 31. Mai 2004
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Preise runden

  Alt 29. Mai 2004, 20:44
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.

  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Preise runden

  Alt 29. Mai 2004, 21:20
Hallo

mit datenbanken mach ich nix, aber du hast die Frage ja auch nicht in der Datenbank rubrik gewählt

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:
  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
Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Preise runden

  Alt 29. Mai 2004, 21:35
und für den 5-steller kannst du ja mal das probieren:
Delphi-Quellcode:
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;
Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#4

Re: Preise runden

  Alt 29. Mai 2004, 21:36
Hallo, grüß Dich,

ich habe einige Rechnungsprogramme im Umlauf

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
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Preise runden

  Alt 30. Mai 2004, 11:45
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.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: Preise runden

  Alt 30. Mai 2004, 21:31
Zitat:
Vielleicht stelle ich mich auch nur so dumm an ?
keine ahnung, solange du keinen Code von dir zeigst.

Zitat:
4,35 € (5,-€)
wären nach der aufgabenstellung meiner meinung nach 4€

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:
if zahl<10 then runden_einstellung...
 else if zahl<100 then ...
  else if zahl<1000 then ...
Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Preise runden

  Alt 31. Mai 2004, 09:11
Alles klar,
Jetzt hab ichs geschnallt.

Vielen Dank nochmal.
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:20 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