Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahl auf ihre Natürlichkeit überprüfen (https://www.delphipraxis.net/54656-zahl-auf-ihre-natuerlichkeit-ueberpruefen.html)

-lx- 9. Okt 2005 00:47


Zahl auf ihre Natürlichkeit überprüfen
 
Hallo!


Und zwar ist meine Farge, wie ich eine Zahl darauf überprüfen kann, ob sie eien Natürliche Zahl ist oder nicht. Also eine ganze Zahl und keinen Komma oder Restwert hat.

Ich will einen ansteigenden Wert durch 7 Zahlen teilen lassen und dann jeweils überprüfen, ob etwas gerades herauskommt.



mfg
Cya

Ultimator 9. Okt 2005 00:50

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Also willst du prakisch testen, ob eine Zahl durch 7 teilbar ist (ein Vielfaches von 7 ist)?

Wenn ja, dann teste, ob
Delphi-Quellcode:
Zahl mod 7 = 0
mod = Modulo -> gibt den Rest einer Division zurück^^

//edit: Zum Thema "etwas gerades": Meinst du, die Zahl, die rauskommt, soll zusätzlich gerade sein?
Dann nimm Delphi-Referenz durchsuchenodd. Die Funktion Odd gibt dir zurück, ob eine Zahl ungerade ist.

tigerman33 9. Okt 2005 09:03

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Um zu prüfen ob eine (Fließkomma-)Zahl eine natürliche Zahl ist, müsste folgendes gehen:
Delphi-Quellcode:
var Zahl: real;
begin
  if Zahl - trunc(Zahl) = 0 then
    ShowMessage('Natürlich');
end;

Khabarakh 9. Okt 2005 10:21

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Zitat:

Zitat von tigerman33
Um zu prüfen ob eine (Fließkomma-)Zahl eine natürliche Zahl ist, müsste folgendes gehen:
Delphi-Quellcode:
var Zahl: real;
begin
  if Zahl - trunc(Zahl) = 0 then
    ShowMessage('Natürlich');
end;

Fließkommazahlen sollte man nie auf Gleichheit überprüfen!
Delphi-Quellcode:
const
  Epsilon = 1E-6;

...

  if Abs(Value - Round(Value)) < Epsilon then
    ...
http://www.delphipraxis.net/internal...=242355#242355

tigerman33 9. Okt 2005 10:29

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Das steht selbstverständlich nicht zur Diskussion. Um ehrlich zu sein, war ich nur ein wenig faul und hab mir das Leben einfacher gemacht... :wink:

Khabarakh 9. Okt 2005 11:12

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Das habe ich mir gedacht :mrgreen: . Trotzdem ist der Code einfach falsch, den konnte ich so nicht stehen lassen :wink: .

[add] Mein Code stimmt aber auch nicht ganz :stupid: :
Delphi-Quellcode:
function InN(const AValue: Single): Boolean;
const
  Epsilon = 1E-6;
begin
  Result := (AValue > 0) and (Abs(AValue - Round(AValue)) < Epsilon);
end;
[/add]

tigerman33 9. Okt 2005 11:19

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Zitat:

Trotzdem ist der Code einfach falsch, den konnte ich so nicht stehen lassen
Ich wusste ja, dass du vorbeikommen und das berichtigen würdest. :mrgreen:

Khabarakh 9. Okt 2005 11:25

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Das nenne ich Teamwork :mrgreen: .

Chrissi91 9. Okt 2005 12:20

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Jetzt komm ich wieder mit meinem pos :duck:

Geht das auch mit Pos? ;)

Delphi-Quellcode:
if pos(edit2.text,',') then
begin
 //was hier passieren soll
end;
Müsste doch auch gehen, oder?

Würde dann meiner Meinung so aussehen.
Beide Variablen sind natürlich integer. :)

Delphi-Quellcode:
zaehler:=0;
repeat
zaehler:=zaehler+1;
zahl:=zaehler;
zahl:=zahl/7;
if pos(zahl,',')then showmessage('Zahl ist keine natürliche Zahl');
until i=100; //als Beispiel
(ungetestet)

Hoffe, ich konnte dir helfen, auch wenns unübersichtlich ist ... ;)

Khabarakh 9. Okt 2005 12:28

Re: Zahl auf ihre Natürlichkeit überprüfen
 
Dann aber bitte
Delphi-Quellcode:
if pos(edit2.text, DecimalSeperator) then
[...]
:wink:
Das Problem mit der Fließkommaungenauigkeit ist damit aber nicht gelöst. Es ist nicht sicher, dass
Delphi-Quellcode:
FloatToStr(2);
wirklich kein Komma besitzt. Um das abzusichern, müsste man FloatToStrF benutzen, da ziehe ich meine Variante aber vor :wink: .


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

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