Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zahl als Bruch speichern (https://www.delphipraxis.net/100045-zahl-als-bruch-speichern.html)

dino 21. Sep 2007 13:15


Zahl als Bruch speichern
 
Hi DP
ich hätte da mal ne Frage und hoffe ihr könnt mir dabei helfen

es geht nämlich um folgendes: ich hab ne real variable und wenn ich z.B. 2 durch 3 teile dann muss der ja irgendwann runden...
nun hab ich ein Programm in dem es erforderlich ist, dass er eben nciht rundet...
unendlich viele nachkommastellen kann ich gleich vergessen, schon klar!
was cih bräuchte wäre dann wohl statt real etwas, was statt zu runden bruchwerte annimmt...

kennt ihr da sowas?
(oder ahbt ihr ne Idee wie ichs lösen könnte?)

danke im vorraus! lg Dino

RavenIV 21. Sep 2007 13:39

Re: genauen wert
 
Bei "2 geteilt durch 3" wirst du vermutlich kein Rundungsproblem bekommen.
Bei "1245 durch 524" schon eher.

Versuch doch mal den grössten Float-Datentyp für die Rechnung zu verwenden.
Anschliessend castest Du auf einen kleineren Float-Datentyp.
Dann könnte sein, dass nur "abgeschnitten" wird.

dino 21. Sep 2007 13:43

Re: genauen wert
 
2 durch 3 war vorher 0.66[..]667 so wie du es sagst wäre es ja dann 0.66[..]66 ...

das stimmt aber ja dann ebenfalls nciht...

also nur abgeschnitten ist mir für den zweck schon zu viel, sorry

der müsste schon dann halt den wert 2/3 annehmen

sirius 21. Sep 2007 13:47

Re: genauen wert
 
Dann musst du dir die Zahlen eben als Bruch merken (oder als Wurzel, wenn du alle reelen Zahlen haben willst).

Flare 21. Sep 2007 13:47

Re: genauen wert
 
Schreibe dir doch eine Klasse die mich Brüchen arbeiten kann oder suche dir eine schon fertige aus (ich weiß gerade nicht ob es in der DP schon fertige Klassen dafür gibt).


Flare

dino 21. Sep 2007 14:17

Re: genauen wert
 
es sind wirklich nur brüche und keine wurzeln...

wie das mt der klasse geht weiss ich ncoh net so ganz :(

klassen wären z.B. real, extended, single, integer u.s.w., oder?

also was in meinem programm (extrem vereinfacht) passiert ist folgendes:

Delphi-Quellcode:
var
  xr,yr,fr:real;
  i,fori:Integer;
for fori := 0 to 1000 do
begin
  fr:=-xr/i;
  xr:=xr+(i*fr);
  yr:=yr+(i*fr);
  // und hier zwischen passiert halt auch ncoh einges, was aber mit dem Problem wenig zu zun hat
end;

dino 21. Sep 2007 14:35

Re: genauen wert
 
also ich denke ich brauche für diesen zweck einfach ne eigene klasse

wo finde ich informationen dazu wie ich mir eine mache oder ob es schon eine richtige für mcih gibt?

DP-Suche schon klar, aber wenn ich z.B. "eigene klasse schreiben" eingebe suche ich mich duselig...

Namenloser 21. Sep 2007 14:51

Re: genauen wert
 
Du brauchst eigentlich nur soetwas:
Delphi-Quellcode:
type
  TBruch = class(TObject);
  public
    zaehler,
    nenner: integer; // Oder Int64 bei sehr großen Zahlen

    procedure add(bruch: TBruch);
    procedure sub(bruch: TBruch);
    procedure mul(bruch: TBruch);
    procedure divide(bruch: TBruch); // div geht nicht, weil das ja ein geschützter begriff ist...
  end;
Die Prozeduren zu den Grundrechenarten musst du natürlich noch implementieren. Das dürfte aber wohl nicht allzu kompliziert sein und sich mit Mathe aus der sechsten Klasse lösen lassen. :zwinker:

sirius 21. Sep 2007 15:03

Re: genauen wert
 
Man sollte natürlich noch eine Methode "kürzen" implementieren, dass man nicht so schnell an die Grenzen von integer kommt :zwinker:

dino 21. Sep 2007 15:08

Re: genauen wert
 
@sirius slbstverständlich

nun sagt er aber "= erwartet aber zaehler gefudnen :("


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 Uhr.
Seite 1 von 6  1 23     Letzte »    

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