![]() |
Prüfung auf Integer oder Real
Hallo!
Hoff das is das richtige Forum für mein Anliegen, also ich kam jetzt erst in der 12. Klasse zum Genuss, mich ans Programmieren zu wagen und sitze jetzt als Quereinsteiger in manchen Belangen recht hilflos vor einem Projekt. Kann mir jemand einen Tipp geben, wie ich die Ergebnisse von verschiedenen Rechnungen darauf prüfen kann, ob sie vom Typ Integer oder Real bzw ob es ganze Zahlen oder Brüche sind? |
Re: Prüfung auf Integer oder Real
Also:
Delphi-Quellcode:
Trunc gibt dir den Teil vor dem Komma, und wer der gleich der Zahl ist, naja, dann ist es ein Integer
if Trunc(Zahl) = Zahl then
ShowMessage('Integer') else ShowMessage('Real'); |
Re: Prüfung auf Integer oder Real
Hi!
Was wäre mit einem Real wie 13,0? Ciao fkerber |
Re: Prüfung auf Integer oder Real
Den kann man ja als Integer ansehen, oder etwa nicht? 13,0 besitzt eigentlich keinen Nachkommateil, deshalb kann der Wert als Integer angesehen werden.
|
Re: Prüfung auf Integer oder Real
Hi!
Naja ne Typumwandlung geht dann aber schief oder geht das tortzdem? Ciao fkerber |
Re: Prüfung auf Integer oder Real
Erstmal herzlich willkommen in der DP! :bounce1:
@alcaeus (edit: bezogen auf dein 1. Posting): Naja nicht wirklich. Ein Real-Wert kann durchaus auch 2.0000... sein. Es könnte also passieren, dass der Vergleich (nicht notwendigerweise) true ergibt. Der Wert wäre zwar identisch, der Typ aber noch lange nicht. Aber wenn man weiss, was man proggt, so kommt man garnicht erst in die Verlegenheit dies prüfen zu müssen. Wenn es aber darum geht zu prüfen, ob ein String (Edit-Feld o.ä.) einen Real- oder Integerwert enthält, so ließe sich mit "val" arbeiten. Beispiel:
Delphi-Quellcode:
Müsste so gehen. Hab "val" noch nie angewendet - hoffentlich hab ich die Hilfe da richtig verstanden ;)
var float: double;
int, code: integer; begin // Prüfung ob Integer val('6,123', int, code); if code <> 0 then ShowMessage('Ist kein Integer') else ShowMessage('Ist ein Integer'); // oder Prüfung auf float: val('6,123', float, code); if code <> 0 then ShowMessage('Ist kein Float') else ShowMessage('Ist ein Float'); end; |
Re: Prüfung auf Integer oder Real
Delphi-Quellcode:
var
a: Real; b: Integer; begin a := 13.0; b := Integer(a); end; Zitat:
|
Re: Prüfung auf Integer oder Real
@dizzy: Entweder gleich oder nicht gleich..und wenn 12 Stellen hinter dem Komma noch ne 1 steht dann stimmt der Vergleich nicht mehr. Die Eingabe kann übrigens auch so geprüft werden:
Delphi-Quellcode:
var float: double;
int: integer; s: String; begin // Prüfung ob Float if TryStrToFloat(s, float) then ShowMessage('Ist ein Float') else ShowMessage('Ist kein Float'); // Prüfung ob Integer if TryStrToInt(s, int) then ShowMessage('Ist ein int') else ShowMessage('Ist kein int'); end; |
Re: Prüfung auf Integer oder Real
Jahaaaa... Dass der Wert gleich ist, das mag ja sein. Aber es geht (wenn ich das jetzt nicht völlig falsch verstanden hab) um den Typ :!:
Aber dass es TryStrToInt/Float gibt, datt wusste ich noch garnet. Wie komfortabel :) |
Re: Prüfung auf Integer oder Real
Zitat:
|
Re: Prüfung auf Integer oder Real
Das ging ja schnell, ich bin begeistert ^^
Also der Val-Befehl funktioniert einwandfrei, den hab ich ja auch schonmal benutzt, allerdings konnte ich den hier nicht anwenden, da ich das Ergebnis der Rechnungen in ne real-Variable speichern musste und der das dann nicht mehr auf Integer prüft. Der trunc-Befehl funktionierte aber, ob da noch 0er hinter dem Komma sind macht auch nichts, da ich die Zahlen gar nicht umwandeln will, sondern eigentlich nur die Teilermengen von ganzen Zahlen ermitteln wollte. |
Re: Prüfung auf Integer oder Real
Zitat:
|
Re: Prüfung auf Integer oder Real
Zitat:
Ich würde den Code etwas anders aufbauen:
Delphi-Quellcode:
Außerdem ist noch zuerwähnen das die Funktionen erst ab Delphi6 oder 7 dabei sind (weiß es jetzt nicht so genau).
var float: double;
int: integer; s: String; begin if TryStrToInt(s, int) // Prüfung ob Integer then ShowMessage('Ist ein int') else if TryStrToFloat(s, float) // Prüfung ob Float then ShowMessage('Ist ein Float') else ShowMessage('Ist kein Float und kein Int'); end; Tschüß Markus |
Re: Prüfung auf Integer oder Real
Zitat:
Aber da hast du ja scheinbar instinktiv der richtigen Riecher gehabt. :thuimb: ;) mfg, dizzy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 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