AGB  ·  Datenschutz  ·  Impressum  







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

Rest der Division bekommen

Ein Thema von Andreas L. · begonnen am 23. Feb 2007 · letzter Beitrag vom 23. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Andreas L.
(Gast)

n/a Beiträge
 
#1

Rest der Division bekommen

  Alt 23. Feb 2007, 20:48
Hi,
ich teile eine Zahl, gespeichert in einer Extended-Variable. z. B.
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 20:49
MOD
Delphi-Quellcode:
erg := bla DIV 137;
rest := bla MOD 137;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 20:51
MOD wäre die korrekte Bezeichnung für den Rest, aber ich glaube, was Andreas möchte, ist
nachkomma := Frac(bla/137);
Julian J. Pracht
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#4

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 20:54
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;
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 20:56
Zitat von Ultimator:
MOD wäre die korrekte Bezeichnung für den Rest, aber ich glaube, was Andreas möchte, ist
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?
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#6

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 20:58
Man beachte meinen beitrag
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 21:00
du könntest das so machen:rest := tmp - Trunc(tmp);
Oliver Hanappi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 21:02
Rest <> Nachkommanateil!

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
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#9

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 21:02
Ich Idiot. Das von ultimator funktioniert natürlich. ich habe vergessen die Variable wieder auf panel1.width zu setzen bevor ich frac aufgerufen habe.
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Rest der Division bekommen

  Alt 23. Feb 2007, 21:05
Oder einfach
X/Y - Floor(X/Y) Du kannst das ganze natürlich auch zu einer ganzzahl machen:
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

EDIT1: Roter kasten ?

EDIT2: Trunc sollte besser sein als Floor. Damit könnte es Probleme bei negativen Zahlen geben.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  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 22:20 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