Darstellung extrem kleiner Zahlen
Darstellung extrem kleiner Zahlen
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.
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.
- 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
Nimm doch
Und falls Du mal garnicht weiter weisst:
Mann darf auch 34 Nullen in die Konstante schreiben.
Nicht verzählen!
Winni
Code: Alles auswählen
const ganzklein =8.4444E-34;
Mann darf auch 34 Nullen in die Konstante schreiben.
Nicht verzählen!
Winni
Re: Darstellung extrem kleiner Zahlen
Oh nein,
natürlich, die Expotentialschreibweise!
Danke!
natürlich, die Expotentialschreibweise!
Danke!
- photor
- Beiträge: 507
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Re: Darstellung extrem kleiner Zahlen
Moin,
Und hast du mal geprüft, wie diese Zahl dann dargestellt wird? Reicht die Auflösung überhaupt?
Ciao,
Photor
Und hast du mal geprüft, wie diese Zahl dann dargestellt wird? Reicht die Auflösung überhaupt?
Ciao,
Photor
- 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
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
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
-
- 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
Auf einer 64-bit-Maschine wird das eh als Double durchgezogen, wenn nicht explizit als Single angegeben. Kann man leicht ausprobieren.
Re: Darstellung extrem kleiner Zahlen
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?
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 (68.2 KiB) 2346 mal betrachtet
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- 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
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:
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
Re: Darstellung extrem kleiner Zahlen
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:
P.S.
Sieht aus wie eine Kapazitätsberechnung. Erinnert mich an mein "CapaCalc" (https://sourceforge.net/p/wp-laz/code/H ... alc/trunk/).
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);
Sieht aus wie eine Kapazitätsberechnung. Erinnert mich an mein "CapaCalc" (https://sourceforge.net/p/wp-laz/code/H ... alc/trunk/).
Re: Darstellung extrem kleiner Zahlen
Danke. Wenn ich mal nachdenken würde - ich meine richtig - dann wäre es für mich einfacher.
- 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
Hi!
Mach das doch!
Wir hindern Dich nicht!
Winni
Mach das doch!
Wir hindern Dich nicht!
Winni