AGB  ·  Datenschutz  ·  Impressum  







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

Wert zu einem Faktor hin runden

Ein Thema von xZise · begonnen am 22. Jun 2006 · letzter Beitrag vom 22. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 17:32
Gibt es eine schnelle Möglichkeit einen Wert (z.B. 142) zu einem bestimmten Wert hin zu runden (z.B. 7)?

Also z.Zt. gehe ich da folgendermaßen vor:
Round(Round(Wert / Faktor) * Faktor) Allerdings soll das Ergebnis eine Ganzzahl sein und der Faktor ist ein Extended. (Wert ist eine Ganzzahl)!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 18:06
Wenn du komplett bei Integer-Arithmetik bleiben möchtest:
Delphi-Quellcode:
var
   wert, faktor : integer;
begin
   wert := 1000;
   faktor := 7;
   wert := ((wert+(faktor div 2)) div faktor) * faktor;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 18:12
Problem: Faktor ist ein Extended
Zitat:
[Fehler] &&&&&& E2015 Operator ist auf diesen Operandentyp nicht anwendbar
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 18:45
Zitat von xZise:
Problem: Faktor ist ein Extended
Du kannst/musst die Variable Faktor zuvor einmal runden:
Delphi-Quellcode:
var
   wert, ifaktor : integer;
   faktor : extended;
begin
   wert := 1000;
   faktor := 7.0;
   ifaktor := round(faktor);
   wert := ((wert+(faktor div 2)) div faktor) * faktor;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 18:53
Zitat von shmia:
Du kannst/musst die Variable Faktor zuvor einmal runden:
Problem ist dann, dass es kein Vielfaches mehr vom Faktor ist
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 18:57
Zitat von xZise:
Problem ist dann, dass es kein Vielfaches mehr vom Faktor ist
Dann mach mal ein vollständiges Beispiel, damit man versteht was gemeint ist.
Delphi-Quellcode:
wert := 1000;
faktor := 10.5;
Und was soll jetzt das Ergebnis der Operation sein?
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 19:05
Okay, dann versuche ich es mal:
Du hast einen Rotwert (0-255).
Und jetzt kann er nicht alle Wert haben (also 0-255), sondern nur 1/6 - 6/6 haben kann (also immer sechstel).

Ich mache mal ein Beispiel:
Zitat:
Farbwert: 125
Auf die Sechstel bezogen ergibt das 3/6!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 19:07
@xZise: Dein erster Code geht doch genau in die richtige Richtung, nur das äußere Round ist natürlich Quatsch.
Delphi-Quellcode:
function RoundTo2(AValue: Integer; ADingens2: Extended): Extended;
begin
  Result := ADingens2 * Round(AValue / ADingens2);
end;

begin
  Writeln(RoundTo2(142, 7.5)); // Ergibt 142,5
  Readln;
end.
@shmia: Etwas verständlicher ausgedrückt: Gesucht werde das Vielfache von y mit dem kleinsten Abstand zu x.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 19:09
Okay... Mal darauf bezogen das ich eionen Integer wiederhaben wollte, hat sich damit die Frage geklärt. Geht es noch "schneller"?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Wert zu einem Faktor hin runden

  Alt 22. Jun 2006, 19:22
Aha. 3/6 (bzw. 3/6 * 255) ist also eine Ganzzahl, alles klar .
Und wie soll das noch schneller gehen, außer vielleicht mit ASM und SSE o.Ä.?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:55 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