![]() |
Kann man den Wertebereich eingrenzen ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,
also ich bin dabei einen Taschenrechner zu Programmieren und verwende dazu double Werte. Natürlich hat double auch nur einen bestimmten Wertebereich und da wollte ich mal nach hören ob man im programm das irgdenwie angeben kann...Denn sonst kommt bei einer zu hohen Zahl so ein ergebnis raus: Anhang 48016 und das soll es eben nicht... Deshalb hab ich die frage ob man den eingegrenzten Wertebereich irgendwie angeben kann, das wenn die Zahl zu groß oder zu klein ist eine Fehlermeldung erscheint und die Zahl automatisch auf null gesetzt wird...Bei Integern ist mir das ganze klar...Aber bei einem double ist das für mich ein großes Problem. Liebe Grüße und schon mal danke im Vorraus M3g0n |
AW: Kann man den Wertebereich eingrenzen ?
Das nennt sich Bedingungen. Du kannst das über eine if-Abfrage lösen.
Schaue mal hier auf Seite 31, Kapitel 3.4.2. Bedingungen: ![]() |
AW: Kann man den Wertebereich eingrenzen ?
Schon mal dankeschön für diese schnelle und liebe Antwort. Aber das mit der Bedinung ist mir bewusst..meine frage ist wie ich das mit einem double in eine Bedinung rein bringen soll....da der Wertebereich ja 5.0*10^-324 .. 1.7*10^308 beträgt...
|
AW: Kann man den Wertebereich eingrenzen ?
Du schaust halt mal, bis zu welchem Wert Du mit Deiner Routine korrekt arbeiten kannst und fragst den an geeigneter Stelle im Programm ab.
Delphi-Quellcode:
const
Maximalwert: Double = 100000000; // als Beispiel var Eingabe : Double; // an geeignetet Stelle: if Eingabe > MaxDouble then begin MessageDlg(Format('Der Eingabewert %f übersteigt den zulässigen Maximalwert von %f.',[Eingabe,Maximalwert]),mtError,[mbOk],0); end else begin // Beliebige Berechnung, Verarbeitung, Ausgabe ... end; |
AW: Kann man den Wertebereich eingrenzen ?
Achso, deine Frage ist aber auch etwas unpräzise.
Dafür gibt es Konstanten in der Unit Math. Schaue dir an wie sie in der Unit definiert sind und dann weißt du auch wie man Double-Zahlen mit Exponentialschreibweise in Delphi definiert.
Delphi-Quellcode:
program Project3;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Math; var YourNumber : Double; begin try YourNumber := (Random * Random) / Random; if (YourNumber < System.Math.MaxDouble) and (YourNumber > System.Math.MinDouble) then begin // make magic Writeln(YourNumber); end else YourNumber := 0; Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
AW: Kann man den Wertebereich eingrenzen ?
Dankeschön euch Zwei :) das hat mir wirklich sehr geholfen und habs hinbekommen.
|
AW: Kann man den Wertebereich eingrenzen ?
Er hats zwar herausgefunden, aber ich denke er suchte nicht den Max-Wert von Double sondern den Wert, ab dem der Kram mit E25 an die Zahl gehängt wurde.
|
AW: Kann man den Wertebereich eingrenzen ?
Nun ja, man jann natürlich auch in einem Taschenrechner, wenn das jeweilige Result extra gespeichert wird, eine bessere Darstellung "erzwingen".
Beispiel:
Delphi-Quellcode:
ergibt Output (hier in ein TMemo):
procedure TMainForm.btnFormatClick(Sender: TObject);
const fDouble : Double = 10000000.2356; iFactor : Int32 = 10000000000; begin MemoLogs.Lines.Add(' '); MemoLogs.Lines.Add(' Test Output long doubles ...'); MemoLogs.Lines.Add(' '); MemoLogs.Lines.Add(FloatToStr(fDouble*iFactor)); MemoLogs.Lines.Add(Format('%28.4n',[fDouble*iFactor])); end; Test Output long doubles ... 1,41006544122114E16 14.100.654.412.211.410,0000 Zu mindestens kann man die Zahl besser erkennen. |
AW: Kann man den Wertebereich eingrenzen ?
Zitat:
|
AW: Kann man den Wertebereich eingrenzen ?
Siehe Quelltext. Da muss ich noch mal nachschauen, wieso der Wert mit 1.4... anfängt. Hatte gerade auf diesem Notebook das Delphi gelöscht, um auch da Tokyo zu installieren. Kann es also gerade nicht nachvollziehen.
Es ging nicht um eine Verbesserung der Lesbarkeit an sich, sondern das Vermeiden der wissenschaftlichen/techn. Darstellung des Double. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 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