AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Kann man den Wertebereich eingrenzen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Kann man den Wertebereich eingrenzen ?

Ein Thema von M3g0n · begonnen am 16. Okt 2017 · letzter Beitrag vom 17. Okt 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von M3g0n
M3g0n

Registriert seit: 22. Sep 2017
3 Beiträge
 
#1

Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 13:49
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:
zahl.png
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 14:04
Das nennt sich Bedingungen. Du kannst das über eine if-Abfrage lösen.
Schaue mal hier auf Seite 31, Kapitel 3.4.2. Bedingungen:
https://downloads.delphi-treff.de/DelphiStarter.pdf
  Mit Zitat antworten Zitat
Benutzerbild von M3g0n
M3g0n

Registriert seit: 22. Sep 2017
3 Beiträge
 
#3

AW: Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 14:10
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...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 14:24
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;
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 14:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von M3g0n
M3g0n

Registriert seit: 22. Sep 2017
3 Beiträge
 
#6

AW: Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 15:01
Dankeschön euch Zwei das hat mir wirklich sehr geholfen und habs hinbekommen.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#7

AW: Kann man den Wertebereich eingrenzen ?

  Alt 16. Okt 2017, 21:19
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.
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
193 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Kann man den Wertebereich eingrenzen ?

  Alt 17. Okt 2017, 09:07
Nun ja, man jann natürlich auch in einem Taschenrechner, wenn das jeweilige Result extra gespeichert wird, eine bessere Darstellung "erzwingen".
Beispiel:

Delphi-Quellcode:
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;
ergibt Output (hier in ein TMemo):

Test Output long doubles ...

1,41006544122114E16
14.100.654.412.211.410,0000

Zu mindestens kann man die Zahl besser erkennen.
Thomas Forget
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#9

AW: Kann man den Wertebereich eingrenzen ?

  Alt 17. Okt 2017, 09:37
Test Output long doubles ...

1,41006544122114E16
14.100.654.412.211.410,0000

Zu mindestens kann man die Zahl besser erkennen.
Was nützen besser erkennbare Zahlen, wenn sie falsch sind? Woher hast Du denn die Ausgabe gezaubert? Bei mir ist 10000000.2356*10000000000 = 100000002356000000.0000 = 1.00000002356e17;
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
193 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Kann man den Wertebereich eingrenzen ?

  Alt 17. Okt 2017, 11:33
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.
Thomas Forget

Geändert von TRomano (17. Okt 2017 um 11:35 Uhr)
  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 08:55 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