Darstellung extrem kleiner Zahlen

Für Fragen rund um die Ide und zum Debugger
Antworten
Hog
Beiträge: 6
Registriert: Di 18. Aug 2020, 19:45

Darstellung extrem kleiner Zahlen

Beitrag von Hog »

Hallo,

ich schon wieder.
Dieses Mal geht es mir um die Darstellung extrem kleiner Zahlen in Exponentenschreibweise.
Wie kann ich zum Beispiel 8,444 x 10 hoch -34 als Konstante hinterlegen. Habe viel gelesen, alles durcheinander gebracht und sitze jetzt mit rauchendem Kopf da!
Danke für eure Hinweise.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Darstellung extrem kleiner Zahlen

Beitrag von Winni »

Nimm doch

Code: Alles auswählen

const ganzklein =8.4444E-34;  
Und falls Du mal garnicht weiter weisst:

Mann darf auch 34 Nullen in die Konstante schreiben.
Nicht verzählen!

Winni

Hog
Beiträge: 6
Registriert: Di 18. Aug 2020, 19:45

Re: Darstellung extrem kleiner Zahlen

Beitrag von Hog »

Oh nein,
natürlich, die Expotentialschreibweise!
Danke!

Benutzeravatar
photor
Beiträge: 442
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Darstellung extrem kleiner Zahlen

Beitrag von photor »

Moin,

Und hast du mal geprüft, wie diese Zahl dann dargestellt wird? Reicht die Auflösung überhaupt?

Ciao,
Photor

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Darstellung extrem kleiner Zahlen

Beitrag von Winni »

Hi!

So gerade:

const MinSingle = 1.1754943508e-38;
const MaxSingle = 3.4028234664e+38;

Wenn er das noch kleiner braucht, muss er das als double casten.

Winni

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Darstellung extrem kleiner Zahlen

Beitrag von Timm Thaler »

Auf einer 64-bit-Maschine wird das eh als Double durchgezogen, wenn nicht explizit als Single angegeben. Kann man leicht ausprobieren.

Hog
Beiträge: 6
Registriert: Di 18. Aug 2020, 19:45

Re: Darstellung extrem kleiner Zahlen

Beitrag von Hog »

Danke.
Klappt trotzdem nicht so recht.
Im Bild ist die Fehlermeldung zu sehen. Dabei ist das doch wirklich eine leichte Formel.
E0 und Er sind als Konstanten definiert, die über die ComboBox angewählt werden.
Was, zum Teufel, mache ich falsch?
Dateianhänge
Fehler_25082020.jpg
Fehler_25082020.jpg (68.2 KiB) 2093 mal betrachtet

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2634
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Darstellung extrem kleiner Zahlen

Beitrag von m.fuchs »

1. Du versuchst C das Ergebnis von FloatToStr zuzuweisen. Das geht nicht, dieses Ergebnis ist ein String und C ein Float.
2. Du versuchst Edit3.Text den Inhalt von C zuzuweisen. Das geht nicht, C ist ein Float und Edit3.Text ist ein String.

Das Ganze geht folgendermaßen:

Code: Alles auswählen

Edit3.Text := FloatToStr(C);
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Darstellung extrem kleiner Zahlen

Beitrag von wp_xyz »

Leider unterschlägst du die Variablendeklarationen, so dass man wieder raten muss. Aber egal wie du C deklarierst, ein "C := FloatToStr(C)" kann nicht funktionieren. Es wandelt eine Float-Zahl in einen String um, also steht die Float-Zahl in Klammern als Argument, un das Ergebnis ist ein String - bei dir steht aber an beiden Stellen dieselbe Größe...

Damit es funktioniert, muss im Argument also eine Zahl stehen, vermutlich ist C wegen der Rechnung in der Zeile drüber so deklariert, und das Ergebnis musst du einem String zuweisen, in der Zeile drunter machst du "Edit3.Text := C". Also muss es so heißen:

Code: Alles auswählen

var
  a, b, z, C, d, E0, ErGlimmer: Double;
  ...
  C := ((E0*ErGlimmer*a*a) / d) * (z-1);
  Edit3.Text := FloatToStr(C);
P.S.
Sieht aus wie eine Kapazitätsberechnung. Erinnert mich an mein "CapaCalc" (https://sourceforge.net/p/wp-laz/code/H ... alc/trunk/).

Hog
Beiträge: 6
Registriert: Di 18. Aug 2020, 19:45

Re: Darstellung extrem kleiner Zahlen

Beitrag von Hog »

Danke. Wenn ich mal nachdenken würde - ich meine richtig - dann wäre es für mich einfacher.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Darstellung extrem kleiner Zahlen

Beitrag von Winni »

Hi!

Mach das doch!
Wir hindern Dich nicht!

Winni

Antworten