![]() |
Rest der Division bekommen
Hi,
ich teile eine Zahl, gespeichert in einer Extended-Variable. z. B.
Delphi-Quellcode:
Angenommen das Ergebnis ist jetzt keine ganze Zahl, z. B. 5,13
bla := bla / 137;
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. |
Re: Rest der Division bekommen
MOD
Delphi-Quellcode:
erg := bla DIV 137;
rest := bla MOD 137; |
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);
|
Re: Rest der Division bekommen
Hier die Funktion
Delphi-Quellcode:
100 = Zähler
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; 3 = Nenner 20 = Komastellen Aufrufen mit
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Label1.Caption := Division_String(100,3,20); end; |
Re: Rest der Division bekommen
Zitat:
Delphi-Quellcode:
Da stimmt aber irgendwas nicht?? Der Rest müsste 0,1313... sein
tmp := panel1.Width;
tmp := tmp / 137; ShowMessage(floattostr(tmp)); =3,13138686131387 tmp := Frac(tmp/137); ShowMessage(floattostr(tmp)); =0,0228568384037509 @hedie: Uff, so ne fette Funktion jetzt einbinden. Da muss doch Delphi was eigenes haben, oder? |
Re: Rest der Division bekommen
Man beachte meinen beitrag :mrgreen:
|
Re: Rest der Division bekommen
du könntest das so machen:
Delphi-Quellcode:
rest := tmp - Trunc(tmp);
|
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:
Aber
5 : 2 = 2,5
Code:
5 : 2 = 2 Rest 1
|
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.
|
Re: Rest der Division bekommen
Oder einfach
Delphi-Quellcode:
Du kannst das ganze natürlich auch zu einer ganzzahl machen:
X/Y - Floor(X/Y)
Delphi-Quellcode:
Die Zahl 100 gibt dabei die genauigkeit an. in diesem Fall 2 Nachkommastellen. Bei 3 wäre es dann 1000 usw.
Round((X/Y - Floor(X/Y)) * 100)
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. |
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