AGB  ·  Datenschutz  ·  Impressum  







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

kaufmännisch auf 0,5 oder 1 runden

Ein Thema von juergen · begonnen am 20. Mai 2008 · letzter Beitrag vom 26. Mai 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 21:28
Hallo zusammen,

ich versuche nun schon seit einiger Zeit ein bestimmtes Rundungsergebnis zu erreichen.
Habe auch schon vieles hier gelesen und auch ausprobiert, aber ich konnte mein Problem damit leider noch nicht selbstständig lösen.
Generell benötige ich eine Rundung, wo als Ergebnis immer nur eine Null oder eine 5 hinter dem Komma stehen soll; abhängig von dem Ergebnis der kaufmännischen Rundung.
Quasi in 0,5er Einheiten kaufmännisch runden, anstelle der gewohnten 1er Einheiten.
Beispiele:
12,2499 -> 12,0
12,25 -> 12,5
12,49 -> 12,5
12,5 -> 12,5
12,74 -> 12,5
12,75 -> 13,0
13,24454645 -> 13,0

Könnte mir hier jemand weiterhelfen?

Vielen Dank schon mal im Voraus!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 21:33
Die 12,50 ist ein Knackpunkt. Aber das hier auch ?

Zitat von juergen:
12,49 -> 12,5
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 21:37
round(x*2)/2 müsste hinhaun

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 22:12
@Hansa,
ja, so soll/ muss es sein sein

@JasonDX,
Round hatte ich hier bei meiner kaufmännischen Rundung auf Grund des Verhaltens (Bankers Rounding) gar nicht in Betracht gezogen.
Dein Vorschlag funktioniert schon fast perfekt, vielen Dank!
Allerdings wird z.B. bei 12,25 auf 12 abgerundet, ich benötige allerdings genau ab 12,25 das Ergebnis -> 12,5, also eine Aufrundung.
Als Workaround könnte ich 0.0000000001 vor dem Round hinzuzählen...

Hat noch jemand einen Lösungsansatz?
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#5

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 22:16
Zitat von juergen:
12,74 -> 12,5
12,75 -> 13,0
kaufmännisch runden?

sag mal, was und wie willste genau runden? nur kaufmännisch runden, ist das nicht...
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 22:37
@grenzgaenger,
du hast Recht, das richtige kaufmännische Runden ist es natürlich nicht.
Ich möchte im Prinzip in 0,25er Schritten kaufmänisch runden, anstelle in 0,5er Schritten.

Mein Anwendungsfall:
Ermittlung von Urlaubsanspruch beim Arbeitsbeginn im lfd.Jahr.
Es gibt u.a. die Regelung, dass der Urlaubsanspruch kaufmännisch auf halbe Tage gerundet wird.
Wenn dann z.B. ein neuer Mitarbeiter am 15.Mai anfängt und er einen Ganzjahres-Urlaubsanspruch von 28 Tagen hat, so ergäbe das einen Urlaubsanspruch für dieses "angebrochene" Jahr von 17,672131147541 Tagen, "kaufmännisch" auf halbe Tage gerundet wären es dann 17,5 Tagen.

Der Knackpunkt ist eben das kaufmännische Runden auf halbe Tage.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#7

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 20. Mai 2008, 22:53
willst du jetzt in halbe schritte runden (x := trunc(x * 2) / 2) oder in 1/4 (x := trunc(x * 4) / 4)?

PS: ggf. kannst du noch 'n hundertstel dazu zählen... oder round hernehmen
  Mit Zitat antworten Zitat
Benutzerbild von Marc.
Marc.

Registriert seit: 14. Mär 2008
Ort: Aachen
22 Beiträge
 
Delphi 2009 Professional
 
#8

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 25. Mai 2008, 15:09
Hi juergen!
Was hälst Du denn von einer simplen If-Abfrage?
Delphi-Quellcode:
function myround(z: real): real;
var r: real;
begin
   r := frac(z);

   if (r >= 0.25) and (r < 0.75) then result := trunc(z) + 0.5 else
   if (r >= 0.75) then result := trunc(z) + 1 else
                                      result := trunc(z);
end;
Cheers,
Marc

[edit] Funktion korrigiert [/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 25. Mai 2008, 15:11
Altes kaufm. Runden geht mit "Wert *50 /100" (wennch mich richtig erinner*g*)
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#10

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 25. Mai 2008, 15:35


fast hat normal immer das selbe schema

abschneiden(betrag * faktor) / faktor

wenn aufgerundet werden soll, wird dann noch 'n kleiner betrag hinzugezählt, damit aufgerundet wird, bevor die die stellen abgeschnitten werden...

also

abschneiden(betrag * faktor + addon) / faktor

bei einem hundertstel (zwei dezimalstellen), x = trunc(23,501 * 100 + 0.5) / 100 --> 2350,1 + 0.5 --> 2550,6 --> 2550 --> 25,50

auf diese weise durfte man immer in basic runden...

bei rundung aufs fünferl, ist der faktor 20 ...
  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 11:38 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