Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Rest der Division bekommen (https://www.delphipraxis.net/87140-rest-der-division-bekommen.html)

Andreas L. 23. Feb 2007 21:48


Rest der Division bekommen
 
Hi,
ich teile eine Zahl, gespeichert in einer Extended-Variable. z. B.
Delphi-Quellcode:
bla := bla / 137;
Angenommen das Ergebnis ist jetzt keine ganze Zahl, z. B. 5,13

Wie kann ich jetzt den Rest bekommen, also die 0,13 ??

Ich weiß das es da eine Funktion gibt. Mir fällt nur der Name nicht ein. Hab schon überall gesucht.

mkinzler 23. Feb 2007 21:49

Re: Rest der Division bekommen
 
MOD
Delphi-Quellcode:
erg := bla DIV 137;
rest := bla MOD 137;

Ultimator 23. Feb 2007 21:51

Re: Rest der Division bekommen
 
MOD wäre die korrekte Bezeichnung für den Rest, aber ich glaube, was Andreas möchte, ist
Delphi-Quellcode:
nachkomma := Frac(bla/137);

hedie 23. Feb 2007 21:54

Re: Rest der Division bekommen
 
Hier die Funktion

Delphi-Quellcode:
Function Division_String(Zaehler,Nenner,NachKommaStellen: integer): string;
var
  l,i,rest : word;
  s : string;
begin
  result := '';
  l := 0;
  i := (zaehler div Nenner);
  s := inttostr(i);
  rest := (Zaehler mod Nenner);
  If Rest <> 0 then s := s + '.';

  while (rest <> 0) and (l < NachKommaStellen) do
  begin
    If (Rest < nenner) then Rest := (Rest * 10);
    i := (Rest div Nenner);
    s := s + inttostr(i);
    rest := (rest mod Nenner);
    inc(l);
  end;
  result := s;
end;
100 = Zähler
3 = Nenner
20 = Komastellen

Aufrufen mit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Division_String(100,3,20);
end;

Andreas L. 23. Feb 2007 21:56

Re: Rest der Division bekommen
 
Zitat:

Zitat von Ultimator
MOD wäre die korrekte Bezeichnung für den Rest, aber ich glaube, was Andreas möchte, ist
Delphi-Quellcode:
nachkomma := Frac(bla/137);

Delphi-Quellcode:
 tmp := panel1.Width;
 tmp := tmp / 137;
 ShowMessage(floattostr(tmp));
=3,13138686131387
 tmp := Frac(tmp/137);
 ShowMessage(floattostr(tmp));
=0,0228568384037509
Da stimmt aber irgendwas nicht?? Der Rest müsste 0,1313... sein

@hedie: Uff, so ne fette Funktion jetzt einbinden. Da muss doch Delphi was eigenes haben, oder?

hedie 23. Feb 2007 21:58

Re: Rest der Division bekommen
 
Man beachte meinen beitrag :mrgreen:

idontwantaname 23. Feb 2007 22:00

Re: Rest der Division bekommen
 
du könntest das so machen:
Delphi-Quellcode:
rest := tmp - Trunc(tmp);

Luckie 23. Feb 2007 22:02

Re: Rest der Division bekommen
 
Rest <> Nachkommanateil! :warn:

Der Rest ist der Teil eines Ergebnisses, der sich nicht mehr glatt durch den Divisor teilen lässt und "übrigbleibt". Beispiel:
Code:
5 : 2 = 2,5
Aber
Code:
5 : 2 = 2 Rest 1

Andreas L. 23. Feb 2007 22:02

Re: Rest der Division bekommen
 
Ich Idiot. Das von ultimator funktioniert natürlich. ich habe vergessen die Variable wieder auf panel1.width zu setzen bevor ich frac aufgerufen habe.

Hador 23. Feb 2007 22:05

Re: Rest der Division bekommen
 
Oder einfach
Delphi-Quellcode:
X/Y - Floor(X/Y)
Du kannst das ganze natürlich auch zu einer ganzzahl machen:
Delphi-Quellcode:
Round((X/Y - Floor(X/Y)) * 100)
Die Zahl 100 gibt dabei die genauigkeit an. in diesem Fall 2 Nachkommastellen. Bei 3 wäre es dann 1000 usw.

Is übrigends ungetestet, sollte aba funktionieren :mrgreen:

EDIT1: Roter kasten ? :shock:

EDIT2: Trunc sollte besser sein als Floor. Damit könnte es Probleme bei negativen Zahlen geben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz